pytest如何改变测试结果

时间:2017-06-07 07:25:44

标签: python pytest fixtures nose2

我正在将一堆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报告中显示的原因。 我想解释什么钩子和什么对象要更新以正确更改最终报告,更新测试失败次数,并将错误的数量正确链接到每个测试。 谢谢一堆

0 个答案:

没有答案