Python+selenium 日志输出

  此篇笔记用于记录自动化测试执行过后,自动输出日志并指定保存路径,方便测试人员进行查看。

  大体的步骤可以分为一下几步:
1、创建logger:logger = logging.getLoger()
2、创建handler:handler =logging.FileHandler() (FileHandler()将日志输出到文件中)
3、定义formater(日志格式): formater = logging.Formater()
4、给handler添加formater:handler.setFormater(formater)
5、给logger添加handler: logger.addHandler(handler)
6、调用对应级别日志方法输出日志;日志的级别:error>warning>info>debug

  首先我们创建一个Log类,其中定义构造方法,定义日志输出方法。

import logging

class Log:
    #定义构造方法
    def __init__(self, logname):
        #组织日志存放路径+名称+格式的一个字符串
        self.logfile = "存放路径" + "文件名称" + ".log"
        #创建logger
        self.logger = logging.getLogger(logname)
        #设置logger日志级别,设置日志级别后,可以输出设计级别以上级别的日志,默认warning级别
        self.logger.setLevel(logging.DEBUG)#DEBUG级别以上可以输出

    
    #定义方法,实现日志的输出
    def __log_print_to_file(self, level, message):
        #创建handler,将日志输出到文件中
        handler = logging.FileHandler(self.logfile, "a")#a表示追加模式
        #设置日志级别
        handler.setLevel(logging.DEBUG)#DEBUG级别以上可以输出
        #定义formatter
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#asctime为时间,name为getLogger()中的name,levelname为日志级别,message为日志信息
        #给handler添加formatter
        handler.setFormatter(formatter)
        #给logger添加handler
        self.logger.addHandler(handler)
        #根据传入的level实现不同日志级别的输出
        if level == "debug":
            self.logger.debug(message)
        elif level == "info":
            self.logger.info(message)
        elif level == "warning":
            self.logger.warning(message)
        elif level == "error":
            self.logger.error(message)
        #避免日志的重复输出
        self.logger.removeHandler(handler)
        handler.close()#关闭打开的文件

    #定义方法调用__log_print_to_file实现日志输出
        def log_debug(self,message):
            self.__log_print_to_file("debug", message)

        def log_info(self,message):
            self.__log_print_to_file("info", message)

        def log_warning(self,message):
            self.__log_print_to_file("warning", message)

        def log_error(self,message):
            self.__log_print_to_file("error", message)
  附一个定义时间戳的方法,可以加在文件名当中,便于区分日志:
from datetime import datetime


def get_shijianchuo():
        now_time = datetime.now()
        #使用datetime模块下的strftime()将取到的时间格式转化为字符串
        shijianchuo = datetime.strftime(now_time, '%Y%m%d%H%M%S')
        return shijianchuo

 

posted @ 2020-12-25 17:26  卷尾喵  阅读(1642)  评论(0编辑  收藏  举报