我正在将一堆nose2测试迁移到pytest,那些产量和pytest没有开箱即用的测试;所以我必须为这些类型制作一些东西,因此我收集了类型" myassert val1 == val2,错误消息"的每个自定义断言,我在字典中收集它们并通过下面的钩子我将它们添加到最终报告
@ pytest.hookimpl(hookwrapper = True,tryfirst = True)def pytest_runtest_makereport(item,call): #在下一个钩子执行之前做任何你想做的事情 结果=产量
# outcome.excinfo may be None or a (cls, val, tb) tuple res = outcome.get_result() # will raise if outcome was exception if res.when == 'call': if not internal_errors == 0: #add all collected errors for error in test_results[caller_function_name][False]: res.sections.append(("Captured stder call", "ERROR: (%s): %s" % (caller_function_name, error))) res.sections.append(("Captured stdout call", "Test case final result FAILED"))
最终报告包含它们,它在从命令行或pycharm输出窗口运行时列出它们,但它们不会显示在junitxml报告中。 最后的失败次数仍然取决于我收集了多少次test_ *失败,而不是我收集了多少错误,如何在报告中更改?要更新的报告对象属性是什么? 另外,当在pycharm中运行时,我可以在报告树的根目录中看到错误,就像我在命令行中运行时在输出报告中看到它们但它们与每个test_ *没有关联,我已经运行,它们与根报表对象。这大概就是他们没有在junitxml报告中显示的原因。 我想解释什么钩子和什么对象要更新以正确更改最终报告,更新测试失败次数,并将错误的数量正确链接到每个测试。 谢谢一堆