pytest + yaml 框架 -9.logging日志输出和保存
前言
pytest 运行yaml 文件默认在控制台显示简短的信息,当我们需要排查问题时,需开启日志追踪更多的信息。
pip 安装插件
pip install pytest-yaml-yoyo
logging日志功能在 v1.0.7 版本上实现
logging 日志开启
pytest 的日志分2个部分:
- console 控制台输出的日志
- log_file 保存到本地文件的日志
本插件默认情况下会记录运行日志保存在项目根目录logs下,以当前时间保存txt文本日志内容。
日志默认保存info级别。
console 控制台默认不输出日志
开启 console 控制台日志
控制台直接运行 pytest 是不会用日志输出的,因为默认仅输出 warning 以上的级别日志
有3种方式启动 console 日志
方法1:命令行带上--log-cli-level
参数,设置日志级别
>pytest --log-cli-level=info
方法2: pytest.ini 配置开启日志,并且设置日志级别
[pytest]
log_cli = true
log_cli_level = info
方法3: pytest -o方式重写(即覆盖ini文件中的log相关的命令行参数)
pytest -o log_cli=true -o log_cli_level=INFO
即可在控制台看到日志
-------------------------------------------- live log call --------------------------------------------
2022-12-08 08:30:34 [INFO]: 执行文件-> test_demo.yml
2022-12-08 08:30:34 [INFO]: base_url-> None
2022-12-08 08:30:34 [INFO]: variables-> {}
2022-12-08 08:30:34 [INFO]: 运行 teststeps
2022-12-08 08:30:34 [INFO]: -------- request info ----------
POST http://httpbin.org/post
{
"method": "POST",
"url": "http://httpbin.org/post",
"json": {
"username": "test",
"password": "123456"
}
}
2022-12-08 08:30:35 [INFO]: ------ response info 200 OK 0.495961s------
自定义 console 控制台日志
日志的格式和时间格式也可以自定义设置
[pytest]
log_cli = true
log_cli_level = info
log_cli_format = %(asctime)s %(filename)s:%(lineno)s [%(levelname)s]: %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
自定义保存日志文件
本插件默认情况下会记录运行日志保存在项目根目录logs下,以当前时间保存txt文本日志内容。
日志默认保存info级别。
如果你想改变这些默认的行为,自定义日志文件目录和名称,可以在pytest.ini 配置日志文件
(log_file 相关的结果是保存日志文件到本地)
[pytest]
log_cli = true
log_cli_level = info
log_cli_format = %(asctime)s %(filename)s:%(lineno)s [%(levelname)s]: %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
log_file = ./yoyo.log
log_file_level = debug
log_file_format = %(asctime)s %(filename)s:%(lineno)s [%(levelname)s]: %(message)s
log_file_date_format = %Y-%m-%d %H:%M:%S
命令行参数配置
log日志的配置也可以用命令行参数配置(pytest -h可以查看)
--no-print-logs disable printing caught logs on failed tests.
--log-level=LOG_LEVEL logging level used by the logging module
--log-format=LOG_FORMAT log format as used by the logging module.
--log-date-format=LOG_DATE_FORMAT log date format as used by the logging module.
--log-cli-level=LOG_CLI_LEVEL cli logging level.
--log-cli-format=LOG_CLI_FORMAT log format as used by the logging module.
--log-cli-date-format=LOG_CLI_DATE_FORMAT log date format as used by the logging module.
--log-file=LOG_FILE path to a file when logging will be written to.
--log-file-level=LOG_FILE_LEVEL log file logging level.
--log-file-format=LOG_FILE_FORMAT log format as used by the logging module.
--log-file-date-format=LOG_FILE_DATE_FORMAT log date format as used by the logging module.
还可以使用 pytest -o
方式重写(即覆盖 ini 文件中的 log 相关的命令行参数)
pytest pytest test_log.py -o log_cli=true -o log_cli_level=INFO
完整的教程已上传到gitee https://gitee.com/yoyoketang/pytest-yaml-yoyo上,如果觉得对你有帮助,可以给个 star
网易云完整视频课程https://study.163.com/course/courseMain.htm?courseId=1213419817&share=2&shareId=480000002230338
报名咨询wx:283340479 (已报名的同学学习过程中有问题,都可以协助解决)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-12-08 2021年第六期《python接口自动化+测试开发》课程,1月9号开学(火热报名中!)
2019-12-08 pytest文档30-功能用例与自动化用例完美对接(allure)
2019-12-08 pytest文档29-allure-pytest(最新最全,保证能搞成功!)
2017-12-08 python笔记5-python2写csv文件中文乱码问题