根据pytest文档,我可以断言发生了SystemExit(),但我还想做更多的事情:我还想验证退出代码和任何消息。我尝试了下面的代码,但是没有打印出来,我不确定需要断言什么来证明我得到了正确的错误代码。
with pytest.raises(SystemExit):
docopt_args = validate_args(docopt_args)
out, err = pytest.capsys.readouterr()
assert out == 'Foo'
print out, err
当我运行测试时,它通过了,但就是这样。没有打印任何内容,也不会出现断言错误。
我希望执行的代码是:
print '\n' + docopt_args['-d'] + ' is not a valid date\n'
sys.exit(-3)
这适用于最新的pytest:
您只需使用
--capture=sys
选项运行pytest
,并依赖于raises()
上下文之外的断言(由于某些原因,此位非常重要!)示例:
演示:
将
print("Foo")
更改为print("Bar")
将导致:我想这正是你想要的!
我是在一个干净的virtualenv里做的:
这里的诀窍是阅读和理解Setting capturing methods or disabling capturing
相关问题 更多 >
编程相关推荐