如何向报告中添加附加信息

在使用 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="自定义标题"))

results matching ""

    No results matching ""