【发布时间】:2016-11-13 07:21:18
【问题描述】:
我正在调试间歇性测试失败。为此,如果测试失败,我想转储大量调试信息。转储调试内容是一个非常缓慢的过程,会产生大量数据,所以我不想在每次测试时都这样做。
我正在使用 pytest 和 yield autouse 夹具应该很好用
@pytest.yield_fixture(scope="function", autouse=True)
def dump_on_failue(request):
prepare_debug_dump()
yield
if test_failed(request):
debug_dump()
问题是我不知道如何检测测试是否失败。有a questions already,甚至还有on pytest website:
if request.node.rep_setup.failed:
print ("setting up a test failed!", request.node.nodeid)
elif request.node.rep_setup.passed:
if request.node.rep_call.failed:
print ("executing test failed", request.node.nodeid)
很遗憾,此代码不再起作用。节点对象中没有 rep_setup 和 rep_calls 符号。我试图挖掘请求和节点对象,但没有运气。
有人知道如何检测测试是否失败吗?
【问题讨论】:
-
您列出的示例中的
pytest_runtest_makereport挂钩添加 那些rep_*属性。你确定你也添加了? -
这个答案stackoverflow.com/a/51830008/3162884 解释了如何使用 pytest_runtest_makereport 以便创建 rep_*