print不起作用 pytest_关于python:如何在pytest运行期间看到正常的打印输出?

当在 Pytest 中使用 print 语句进行调试时,标准输出可能无法在 IDE 如 Pycharm 中正常显示。通过使用 `-s` 开关,可以禁用 Pytest 的输出捕获,使得 print 语句在测试运行期间可见。如果想要同时捕获输出以便在 Junit 报告中显示,可以考虑使用 teeing 方法,但 Pytest 目前不直接支持。文章还介绍了如何通过 monkeypatching Pytest 的 `_getcapture` 方法来实现捕获 stderr 而不是 stdout,以在长运行的测试中区分错误跟踪。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时,我只想在代码中插入一些打印语句,看看当我练习它时会打印出什么。我通常的"练习"方法是使用现有的Pytest测试。但当我运行这些程序时,我似乎看不到任何标准输出(至少在我的IDE pycharm中是这样)。

有没有一种简单的方法可以在Pytest运行期间查看标准输出?

只是失败还是总是失败?

-s禁用每个测试捕获

@德尔南-我一直都想看看

-s开关禁用每次测试捕获。

-s--capture=no

在对已接受答案的乐观评论中,乔问:

Is there any way to print to the console AND capture the output so that it shows in the junit report?

在Unix中,这通常被称为teeing。理想情况下,teeing而不是捕获将是py.test的默认值。非理想情况下,py.test和任何现有的第三方py.test插件(我知道,无论如何)都不支持teeing——尽管python非常支持现成的teeing。

猴子修补py.test来做任何不支持的事情都是不平凡的。为什么?因为:

大多数py.test功能都锁定在不打算从外部导入的私有_pytest包之后。尝试在不知道自己在做什么的情况下这样做通常会导致公共的pytest包在运行时引发一些模糊的异常。多谢,小派。测试。你的架构非常强大。

即使您确实知道如何安全地对私有_pytestAPI进行monkey修补,也必须在运行由外部py.test命令运行的公共pytest包之前进行。您不能在插件(例如,测试套件中的顶级conftest模块)中执行此操作。当py.test懒散地开始动态导入插件时,任何你

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值