如何向pytest html报告

时间:2017-04-05 21:07:18

标签: python html selenium selenium-webdriver pytest

我正在使用pytest HTML报告插件进行硒测试。 只需传递test.py --html==report.htmlin命令行就可以生成很棒的报告。

我还需要为每个测试用例显示实现额外的字符串/变量。如果它通过或失败并不重要,它应该只显示"票号"。我可以在每个测试场景中返回此票证ID。

我可以添加票号到测试名称,但看起来很难看。

请告知最好的方法。

谢谢。

1 个答案:

答案 0 :(得分:5)

您可以通过向"显示详细信息"添加html内容为每个测试插入自定义html。每个测试的一部分,或自定义结果表(例如添加一个故障单列)。

第一种可能性是最简单的,您只需将以下内容添加到conftest.py

即可
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
    pytest_html = item.config.pluginmanager.getplugin('html')
    outcome = yield
    report = outcome.get_result()
    extra = getattr(report, 'extra', [])
    if report.when == 'call':
        extra.append(pytest_html.extras.html('<p>some html</p>'))
        report.extra = extra

您可以将<p>some html</p>替换为您的内容。

第二个解决方案是:

@pytest.mark.optionalhook
def pytest_html_results_table_header(cells):
    cells.insert(1, html.th('Ticket'))


@pytest.mark.optionalhook
def pytest_html_results_table_row(report, cells):
    cells.insert(1, html.td(report.ticket))


@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
    outcome = yield
    report = outcome.get_result()
    report.ticket = some_function_that_gets_your_ticket_number()

请记住,您始终可以使用item对象访问当前测试,这可能有助于检索您需要的信息。