PyCharm运行单元测试时如何即时查看print()输出内容
问题原因
PyCharm 运行单元测试时默认开启标准输出捕获机制,会把测试运行过程中所有print()产生的内容暂存在缓冲区,等整个测试执行结束后才统一展示到控制台,目的是避免零散输出打乱测试结果的结构化展示,这也是长耗时测试里看不到实时打印的核心原因。
可用解决方法
- 单条语句强制刷新:给需要实时显示的
print()语句加上flush=True参数,示例写法:
这个方法不需要修改任何PyCharm配置,参数会强制Python立刻清空输出缓冲区把内容推到控制台,适合仅需要查看少量诊断日志的场景。print("当前测试执行到第2步,待处理数据量1200条", flush=True) - 关闭当前运行配置的输出捕获:打开对应测试的「运行/调试配置」面板,找到将输出重定向到测试结果树的勾选框,取消勾选后保存配置再运行测试,所有
print()内容都会实时输出到控制台,不需要修改代码。 - pytest运行器专属设置:如果使用pytest作为测试执行框架,直接在运行配置的「参数」输入框中添加
-s启动参数,这个参数会关闭pytest自带的输出捕获逻辑,运行时所有打印内容会实时展示。 - 一劳永逸修改默认配置:打开PyCharm设置页,依次进入「工具」-「Python集成工具」,在测试配置板块找到默认输出捕获的相关选项并关闭,之后新建的所有测试运行配置都会默认支持实时打印,不用每次单独调整。
注意:如果按上述方法操作后还是看不到实时输出,检查是否同时开启了多层输出捕获(比如PyCharm自带捕获+pytest捕获),把两层捕获都关闭即可正常显示。
内容的提问来源于stack exchange,提问作者g.pickardou
相关产品推荐
相关产品推荐

