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