我正在尝试使用pytest自定义html报告。 例如,如果我有一个目录结构,如:
tests
temp1
test_temp1.py
conftest.py
conftest.py文件也位于tests目录中,它应该与tests目录中的所有子目录相同。 我可以在conftest.py中使用哪些fixture和hookwrappers来更改使用以下命令生成的html文件的内容:
py.test tests / temp1 / test_temp1.py --html = report.html
答案 0 :(得分:3)
看起来你正在使用像pytest-html这样的插件。 如果是这种情况的检查文档检查所有钩子的提供文件。
为pytest-html提供了以下钩子
您可以通过修改夹具中的request.config._html.environment
来添加更改报告的“环境”部分:
@pytest.fixture(autouse=True)
def _environment(request):
request.config._environment.append(('foo', 'bar'))
您可以通过在报表对象上创建“额外”列表来向HTML报表添加详细信息。以下示例使用pytest_runtest_makereport
挂钩添加各种类型的附加内容,可以在插件或conftest.py
文件中实现:
import pytest
@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':
# always add url to report
extra.append(pytest_html.extras.url('http://www.example.com/'))
xfail = hasattr(report, 'wasxfail')
if (report.skipped and xfail) or (report.failed and not xfail):
# only add additional html on failure
extra.append(pytest_html.extras.html('<div>Additional HTML</div>'))
report.extra = extra
答案 1 :(得分:2)
更新:在最新版本中,如果您想修改html报告中的环境表,请添加到conftest.py
下一个代码:
@pytest.fixture(scope='session', autouse=True)
def configure_html_report_env(request)
request.config._metadata.update(
{'foo': 'bar'}
)