Pytest 输出捕获详解:掌握如何查看和控制打印信息
概述
在编写测试时,我们常常会在代码中使用 print()
来调试逻辑。但在默认情况下,Pytest 会自动捕获标准输出(stdout)和标准错误(stderr),这意味着你在测试中写的 print()
不会直接显示在终端上
什么是输出捕获
输出捕获(Output Capture) 是指 Pytest 在执行测试时,会自动拦截程序中所有通过 print()
或 sys.stdout.write()
等方式输出的内容,并将其保存起来,只有当测试失败时才会显示这些输出内容。
这种设计的初衷是:
- 避免大量无用输出干扰正常测试结果。
- 提高测试报告的可读性。
- 只展示出错时的调试信息,方便定位问题。
基本原理简述
当你运行 pytest
命令时,默认会启用以下两个捕获器:
捕获器 | 捕获内容 |
---|---|
-s / --capture | 控制是否捕获 stdout 和 stderr |
--showlocals | 显示局部变量(不是输出捕获,但常配合使用) |
默认行为如下:
- 成功测试:不显示任何
print()
内容。