pytest之添加日志:pytest测试框架有自己的日志管理开关
前言
保存工作中常用的日志一般来说有两种方式。
①pytest测试框架有自己的日志管理开关。(如果开启pytest测试框架的日志功能,则pytest命令行方式运行测试用例时,在Terminal终端同样会打印日志信息。)
【注意】同时满足①开启pytest测试框架的日志功能②使用python的日志库两个条件,Terminal终端打印的日志格式以及日志级别是我们在log模块中设置的格式。
log_cli参数为true:
log_cli参数为false:
②使用python的日志库。(一般使用此种方式记录用例执行期间的日志)
【注意】当单独运行单个模块的测试用例时,日志内容会根据log配置模块中设置的日志格式以及级别来打印或者保存(比如log等级为error会打印至控制台,log等级为info会保存至log文件),而命令行方式运行时,
一般来说,在测试用例的执行过程中日志记录没有实时输出或者保存至日志文件。显得测试用例的执行结果不够权威。(根据日志的级别将日志分发至不同的终端)
【注意】在项目中应用:①log设置模块;②pytest测试框架日志log_cli参数为true。(这样保证不管是单独运行某个模块的测试用例或者是pytest命令行方式运行测试用例都可以在控制台或者Terminal终端查看到相应的日志信息)
pytest测试框架关于log的命令行参数如下:
--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] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:
具体操作
①首先pytest测试框架是从pytest.ini中读取log_cli配置的,默认是关闭的即false。【log_cli参数为true代表开启pytest测试框架自己的日志功能,为false表示关闭。】
②在文件根目录下新建一个pytest.ini或tox.ini或setup.cfg文件,然后将日志相关写入,如下:
[pytest] log_cli=true ; # 开启日记 log_level=NOTSET ; # 日志等级 log_format = %(asctime)s %(levelname)s %(message)s # 日记日期 log_date_format = %Y-%m-%d %H:%M:%S # 日记时间 addopts = -vs # 日志执行的命令 log_file = ./test.log # 日志存放地方 log_file_level = info # 记录日志等级 log_file_format = %(asctime)s %(levelname)s %(message)s # 同记录时间一样 log_file_date_format = %Y-%m-%d %H:%M:%S
③可以使用用pytest -o方式重写(即覆盖ini文件中的log相关的命令行参数);这个功能在pytest 3.4版本之后才实现,如下:
pytest pytest_lean2.py -o log_cli=true -o log_cli_level=INFO
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器