此篇笔记用于记录自动化测试执行过后,自动输出日志并指定保存路径,方便测试人员进行查看。
大体的步骤可以分为一下几步:
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