【python】python+selenium日志

问题分析:
我们需要封装一个简单的日志类,主要有以下内容:

  1. 生成的日志文件格式是 年月日时分秒.log
  2. 生成的xxx.log文件存储在项目根目录下Logs文件夹下
  3. 这个日志类,支持INFO,ERROR两种日志级别
  4. 日志里,每行日志输出,如上图,时间日期+执行类名称+日志级别+日志描述

解决问题思路:

  1. 在根目录下新建一个Logs的文件夹,如何获取这个Log的相对路径,前面介绍过。
  2. 日志的保存命名,需要系统时间,前面也介绍过时间格式化输出
  3. Python中有一个logging模块来支持我们自定义封装一个新日志类。
  4. 在脚本里,初始化一个日志类的实例对象,然后去控制输出INFO还是ERROR日志信息。

自定义日志类封装如下:logger.py,新建在test包下

* coding: utf-8 *

import logging

import os.path

import time

class Logger(object):

def __init__(self, logger):

    """

    指定保存日志的文件路径,日志级别,以及调用文件

        将日志存入到指定的文件中

    :param logger:

    """

    # 创建一个logger

    self.logger = logging.getLogger(logger)

    self.logger.setLevel(logging.DEBUG)

    # 创建一个handler,用于写入日志文件

    rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))

    log_path = os.path.dirname(os.getcwd()) + '/Logs/'

    log_name = log_path + rq + '.log'  

    fh = logging.FileHandler(log_name)

    fh.setLevel(logging.INFO)

    # 再创建一个handler,用于输出到控制台

    ch = logging.StreamHandler()

    ch.setLevel(logging.INFO)

    # 定义handler的输出格式

    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    fh.setFormatter(formatter)

    ch.setFormatter(formatter)

    # 给logger添加handler

    self.logger.addHandler(fh)

    self.logger.addHandler(ch)

def getlog(self):

    return self.logger

新写一个测试日志类,相关代码如下:

coding=utf-8

import time

from selenium import webdriver

from test.logger import Logger

mylogger = Logger(logger=‘TestMyLog’).getlog()

class TestMyLog(object):

def print_log(self):

    driver = webdriver.Chrome()

    mylogger.info("打开浏览器")

    driver.maximize_window()

    mylogger.info("最大化浏览器窗口。")

    driver.implicitly_wait(8)

    driver.get("https://www.baidu.com")

    mylogger.info("打开百度首页。")

    time.sleep(1)

    mylogger.info("暂停一秒。")

    driver.quit()

    mylogger.info("关闭并退出浏览器。")

testlog = TestMyLog()

testlog.print_log()

猜你喜欢

转载自blog.csdn.net/weixin_43400794/article/details/86657003
今日推荐