【Python+selenium】自动化测试框架搭建之日志输出类的封装及调用(笔记)
在自动化测试中我们可能会需要将日志进行输出打印,这就需要我们对日志输出类进行封装,形成公用方法,方便后续调用,Python中提供了logging这一内置模块,用以实现日志的生成。
一、日志的作用:
1.工作日志的作用:
第一、工作日志有利于自我保护,降低责任追究风险。
第二、工作日志有利于科学管理,强化统筹兼顾能力。
第三、工作日志有利于总结提高,形成良好的职业习惯。(转载地址:https://www.jianshu.com/p/7cb7a75b96cc)
2.自动化测试日志的作用:
一:调试程序,日志能跟踪运行代码所发生事件的方法,方便调试;
二:了解系统程序运行的情况,是否正常;
三、系统程序运行故障分析与问题定位;
四、信息查询、服务诊断、数据分析。
二、日志等级:
优先级从小到大五个等级:
debug 调试信息
info 描述重要事件
warning 警告信息
error 错误异常信息
critical 严重错误
三、logging模块为Python内置模块,可以生成日志,包括设置日志等级,日志路径,日志文件回滚等。
logging包括四个组件:
logger 日志器 提供了应用程序的接口
Handler 处理器 通过logger在不同位置输出日志
Formatter 格式器 决定日志以什么样式显示
Filter 过滤器 过滤哪些需要记录输出,哪些需要丢弃
四、输出日志类的封装:
```python
import logging
import os
from time import strftime,localtime
# 使用类的方式实现日志的输出和调用
class LogFileOperation():
def __init__(self,logger=None):
self.logger = logging.getLogger("logger")
self.logger.setLevel(logging.DEBUG)#全局日志等级
#避免日志重复输出
if not self.logger.handlers:
self.dirPath = os.path.dirname(__file__)#获取文件绝对路径
self.alllogPath = os.path.join(self.dirPath, '..', '..', "logfile", "AllLogs","")#打开全部日志存放路径
self.errorlogpath = os.path.join(self.dirPath, '..', '..', "logfile", "ErrorLogs","")#打开错误日志存放路径
self.sysTime = strftime('%Y%m%d%H%M%S', localtime())#获取当前系统时间
self.alllog_name = self.alllogPath + self.sysTime + "allLog.log" #定义全部日志文件名
self.errorlog_name = self.errorlogpath +self.sysTime +"errorLog.log" #定义错误日志文件名
print("所有日志路径:"+self.alllog_name,"\n错误日志路径:"+self.errorlog_name)
# 创建一个handler,参数为打开的文件的路径、名字等信息,以及打开的方式
allfh = logging.FileHandler(self.alllog_name,'a', encoding="utf-8")
allfh.setLevel(logging.DEBUG)#定义全部日志等级
errorfh = logging.FileHandler(self.errorlog_name,'a', encoding="utf-8")
errorfh.setLevel(logging.ERROR)#定义错误日志等级
# 定义输出的格式,formatter 此处定义输出日志生成时间、当前执行文件名、日志等级、输出信息
formatter = logging.Formatter(fmt='%(asctime)s - %(filename)s - %(levelname)s - %(message)s'
)
allfh.setFormatter(formatter)#给全部日志传入输出格式
errorfh.setFormatter(formatter)#给错误日志传入输出格式
self.logger.addHandler(allfh)
self.logger.addHandler(errorfh)
allfh.close()
errorfh.close()
def get_log(self):
return self.logger
五、日志输出类的调用: