大家好,最近在学习自动化测试如何去打印log日志,首先我要知道为什么要去打印log日志?
答:使用通俗易懂的话表达就是因为在测试的过程中,如果某条测试用例没有执行通过,出现了bug,有了日志的记录就可以把app,或者web,在那个页面,什么样的环境,做了什么操作出现的bug,总结的来说就是以下几个方面
- 调试 用于开发进行调试,日志能够记录程序目前运行到了那个页面,处于那个状态
- 辅助定位问题
- 数据分析
首先在学习logging日志模块的时候,我们先学习日志的级别
然后把日志的级别弄清楚以后,我们在学习如何去打印日志,在打印日志之前我们还需要去设置默认的级别,注意:logging日志是设置的那个级别,就打印那个级别及其以上的,以下的就不打印,默认级别是:warning 级别
- 如何设置默认的logging级别,代码如下
logging.basicConfig(level=logging.DEBUG)
ok,如上,我们设置了logging级别为debug级别,这里就是debug本身及以上都会成功打印
实例demo代码如下
注意:在设置默认的logging级别这段代码一定要放在生成所有的logging最上面,才能作用于你编写的整个python文件
import logging
# 设置 logging 默认级别为:DEEBUG 级别,原来默认的级别是:WARNING 级别
logging.basicConfig(level=logging.DEBUG)
logging.debug("这是一个debug")
logging.info("i love you,通知我爱你")
logging.warning("这是一个警告,程序可能会出现问题")
logging.error("这是一个错误,程序部分功能无法使用")
logging.critical("这是一个严重的错误,程序都已经无法运行了,完全瘫痪了")
在运行面板输出的结果如下:
- 通过上面的学习还不能够完全满足我们的日常工作需要,我们还可以将输出的结果以文件的形式进行保留,因为在工作当中如果需要发给其他人或者存储到数据库这些工作场景都是存在的,还有我们可以设置生成日志的时间,级别,信息,文件名,行数
@级别:logging日志的级别
@信息:生成的logging信息,自己编写打印的内容
@文件名:执行的python测试文件名称
@行数:指的是自己编写在测试文件当中处于多少行
@时间格式:这个根据个人风格去设置
实例demo代码如下
import logging
logging.basicConfig(filename='web.log',
level=logging.DEBUG,
format='%(asctime)s [%(levelname)s] %(message)s''%(filename)s:%(lineno)s',
datefmt='%m/%d/%Y %I:%M:%S %p')
logging.debug("这是一个调试")
logging.info("这是一个通知")
logging.warning("这是一个警告")
logging.error("这是一个错误,部分功能无法使用")
logging.critical("系统崩溃,发生了严重错误")
点击运行之后,就会在你的pycharm左侧所在python文件的目录下自动生成你刚刚设置的log日志,我这里设置的log日志名为:web.log 如下图
- 除此之外如果说想要整个项目都使用固定的级别、时间、信息、文件名、行数等等去生成我们的logging日志怎么办呢?这里我们可以去新建一个pytest.ini 文件,作用于整个项目,下面我将我写好的放到下面,大家也可以去参考官方文档去配置自己的风格
需要注意2点
第一点:配置文件pytest.ini ,需要放到我们整个项目的下级目录的第一层,如下图
第二点:windows系统在pytest.ini里面将所有的去掉,因为编码不支持(macos和Linux不用)
[pytest]
;日志开关 true false
log_cli = true
;日志级别
log_cli_level = debug
;打印详细日志,相当于命令行加 -vs
addopts = --capture=no
;日志格式
log_cli_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志时间格式
log_cli_date_format = %Y-%m-%d %H:%M:%S
;日志文件位置
log_file = ./test.log
;日志文件等级
log_file_level = debug
;日志文件格式
log_file_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志文件日期格式
log_file_date_format = %Y-%m-%d %H:%M:%S
到这里,学习完上面的logging日志的生成,就可以解决工作大部分问题了,当然除此之外,还可以去深度学习一下,logging日志生成原理,它是按照模块去实现的,由记录器,格式器,处理器 组成的。详细的可以看官方文档