如何向报告中添加附加信息
在使用 pytest-html
生成的报告中,您可以通过创建一个 extra
列表并将其添加到报告对象中,向报告中添加额外的详细信息。这些附加信息可以是文本、图片、链接等多种类型。以下是几种常用的附加信息类型及其添加方式:
常见附加信息类型及示例
信息类型 | 示例 |
---|---|
原始 HTML | extras.html('<div>Additional HTML</div>') |
JSON 格式 | extras.json({'name': 'pytest'}) |
纯文本 | extras.text('Add some simple Text') |
链接 (URL) | extras.url('http://www.example.com/') |
GIF 动图 | extras.image(image, mime_type='image/gif', extension='gif') |
本地图片 | extras.image('/path/to/file.png') |
网络图片 | extras.image('http://some_image.png') |
注意事项:
- 当您添加图片时,路径既可以是绝对路径,也可以是相对路径。
- 如果您使用了
--self-contained-html
选项,将图片文件或链接形式添加到报告中时,图片可能无法正确显示。详情请查看创建自包含报告。
支持的图片格式
pytest-html
允许方便地添加不同格式的图片到报告中。以下是几种常见的图片格式及添加示例:
图片格式 | 示例 |
---|---|
PNG | extras.png(image) |
JPEG | extras.jpg(image) |
SVG | extras.svg(image) |
使用 pytest hook 添加附加信息
您可以通过 pytest_runtest_makereport
钩子函数,在测试执行过程中为报告添加自定义的附加信息。这通常在 conftest.py
或插件中实现。下面是一个示例,展示了如何添加 URL、HTML 等不同类型的附加信息:
Python
import pytest
@pytest.hookimpl(hookwrapper=True)
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":
# 始终添加一个 URL 到报告中
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):
# 仅在测试失败时添加额外的 HTML
extra.append(pytest_html.extras.html("<div>Additional HTML</div>"))
report.extra = extra
在测试函数中直接添加信息
如果您不想实现钩子函数,可以使用 extra
fixture 在测试函数内部直接添加附加信息。这些内容通常会显示在钩子添加的附加信息之前。
Python
from pytest_html import extras
def test_extra(extra):
# 添加文本信息
extra.append(extras.text("some string"))
# 添加截图到测试报告中
extra.append(extras.image(model.getWindow("Dialogs").takeScreenshot()))
为附加信息指定自定义标题
除了 html
类型外,您可以为其他类型的附加信息指定一个 name
参数,这样就可以自定义该信息在报告中的显示标题。例如:
Python
extra.append(pytest_html.extras.text("some string", name="自定义标题"))