更改一次测试的pytest捕获

时间:2016-08-02 21:09:45

标签: python pytest

是否可以仅在一次测试中更改pytest中的捕获行为 - 即在测试脚本中?

我有一堆与pytest一起使用的测试。在某些测试中,我喜欢打印几个有用的数量,因此我使用-s标志在pytest输出中显示它们。但我也会测试警告,这些警告也会被打印出来,看起来很丑陋,令人分心。我像往常一样尝试使用warnings.simplefilter来不显示警告,但似乎没有做任何事情。 (也许pytest攻击它???)无论如何,我想要一些方法来安静警告,但仍然检查它们是否被引发,同时还能够从我的其他打印语句中看到捕获的输出。有没有办法做到这一点 - 例如,通过改变一个测试函数的捕获?

2 个答案:

答案 0 :(得分:2)

使用pytest 3.x暂时禁用捕获easy way(请参阅有关capsys.disabled()的部分。

还有pytest-warnings插件在专门的报告部分显示警告。

答案 1 :(得分:1)

我是通过手动重定向import os import sys import warnings import pytest def test(): stderr = sys.stderr sys.stderr = open(os.devnull, 'w') with pytest.warns(UserWarning): warnings.warn("Warning!", UserWarning) sys.stderr = stderr

完成的
stdout

为了更好的衡量,我可以同样将@Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Object item = parent.getItemAtPosition(position); Toast.makeText(this, "You selected " + item.toString(), Toast.LENGTH_SHORT).show(); swith(position) { case 0: // CODE for Light Car break; case 1: // CODE for Medium Car break; case 2: // CODE for Heavy Car break; case 3: // CODE for Van break; } } 重定向到devnull,如果不需要其他打印语句的话。