有时,我只想在代码中插入一些打印语句,看看当我练习它时会打印出什么。我通常的"练习"方法是使用现有的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懒散地开始动态导入插件时,任何你