pytest如何仅在标准输出打印摘要 同时将所有测试输出写入日志文件
pytest日志输出需求实现方案
核心结论
pytest没有直接100%匹配需求的单配置内置选项,但有内置功能、成熟第三方插件两种路径可以直接实现,无需自行适配hook代码。
方案1:内置功能实现(无需安装额外依赖)
pytest 6.0及以上版本自带--report-log参数,可直接满足要求:
- 运行命令:
pytest --report-log=test_full_outputs.jsonl - 实际效果:
- 终端完全保持默认行为:仅展示测试进度行,失败用例才打印对应输出信息
- 生成的
test_full_outputs.jsonl为JSON行格式文件,每条记录对应一个测试事件,包含每个测试用例的完整stdout、stderr内容,同时自带测试用例唯一标识nodeid,天然区分不同测试的输出,可自行写简单脚本提取为可读文本格式。
方案2:第三方插件实现(直接生成可读格式化日志)
如果需要直接得到人可读的结构化日志文件,无需后续解析,可使用pytest-logger插件:
- 安装命令:
pip install pytest-logger - 运行命令:
pytest --log-file=test_full_outputs.log --log-file-level=DEBUG - 实际效果:
- 终端输出完全保留默认行为,不受影响
- 插件自动将所有测试的stdout、stderr按测试用例拆分写入指定日志文件,自动区分不同测试的输出内容。
内容的提问来源于stack exchange,提问作者arvidj
相关产品推荐
相关产品推荐

