selenium 数据驱动框架自动化从0到1–8
前面2篇我们讲了数据源的设计与解析excel 文件的方法封装,这篇我们说说日志
日志是代码的一部分,有了它,在出现问题时我们能准确的定位。在用例执行失败时,我们清楚的知道那条用例执行失败了,什么时间执行的,错误是什么的详细信息。
logging模块有三个比较重要的功能组件:具体详情查看官网https://docs.python.org/2/howto/logging.html
loggers 配置文件可定义一些输出日志的appname
handler 过滤器,比如设置日志的分隔大小,输出位置,日志文件创建等
formatters 指定日志输出的格式
在util 包下新建一个get_log_obj.py 文件,用于分装日志对象,在工程Test126Email下创建一个log包,存放日志,代码如下:
#encoding=utf-8
import logging
import os
class GetLog:
def __init__(self):
#获取当前文件绝对路径下的上一层目录
self.path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
self.log_path = os.path.join(self.path, r'log\result.log') #拼接log文件的地址
# 创建logger
self.logger = logging.getLogger()
self.logger.handlers.clear() #清除日志缓存
self.logger.setLevel(logging.DEBUG) #设置日志级别
# 创建日志输出格式
self.formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
def log(self): #日志即输出到控制台又输出到文件
# 指定过滤器组件,以文件的方式输出
ch = logging.FileHandler(self.log_path,'a')
sh = logging.StreamHandler()
ch.setLevel(logging.INFO)
sh.setLevel(logging.INFO)
ch.setFormatter(self.formatter)
sh.setFormatter(self.formatter)
self.logger.addHandler(ch)
self.logger.addHandler(sh)
return self.logger
if __name__ == '__main__':
lg = GetLog().log()
lg.info('i a info')
lg.error('i am error')
lg.debug('i am debug')
总结
这篇日志编写拖了很长时间,现在终于弄好了。有了日志的类,我们就可以在逻辑中加进去了,下一篇我们就正式写自动化的测试逻辑了。