首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pytest-html在HTML中嵌入base64图像?

如何使用pytest-html在HTML中嵌入base64图像?
EN

Stack Overflow用户
提问于 2018-06-12 03:08:38
回答 1查看 2K关注 0票数 3

我正在使用python-appium客户端,并在测试完成后生成一个HTML报告。我想在HTML报告中添加失败测试的嵌入图像。嵌入图像的原因是我也可以从远程机器访问它。下面是我尝试过的代码,它在另一个系统上不起作用,但在本地它起作用了:

代码语言:javascript
复制
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item):
pytest_html = item.config.pluginmanager.getplugin('html')
outcome = yield
report = outcome.get_result()
extra = getattr(report, 'extra', [])

if report.when == 'call' or report.when == 'setup':
    xfail = hasattr(report, 'wasxfail')
    if (report.skipped and xfail) or (report.failed and not xfail):
        screenshot = driver.get_screenshot_as_base64()
        extra.append(pytest_html.extras.image(screenshot, ''))
    report.extra = extra

在我看来,编码的图像没有正确生成,因为这是我在输出HTML文件中看到的:

代码语言:javascript
复制
<td class="extra" colspan="4">
        <div class="image"><a href="assets/75870bcbdda50df90d4691fa21d5958b.png"><img src="assets/75870bcbdda50df90d4691fa21d5958b.png"/></a></div>

我希望"src“不会以".png”结尾,它应该是一个很长的字符串。我不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 04:41:49

您的代码是正确的。然而,pytest-html的标准行为是,即使您将图像作为base64字符串传递,它仍然会在assets目录中存储一个文件。如果要在报表文件中嵌入资产,则需要传递--self-contained-html选项:

代码语言:javascript
复制
$ pytest --html=report.html --self-contained-html

或者将选项存储在pytest.ini

代码语言:javascript
复制
 # pytest.ini (or tox.ini or setup.cfg)
 [pytest]
 addopts = --self-contained-html

为了完整起见,这里是pytest-html readme中的相关部分

创建自包含的报告

为了遵守内容安全策略(CSP),默认情况下,CSS和图像等多个资产是分开存储的。您也可以创建一个自包含的报告,这样在共享结果时会更方便。这可以通过以下方式完成:

$ pytest --html=report.html --self-contained-html

作为文件或链接添加的图像将作为外部资源进行链接,这意味着独立的报告HTML文件可能无法按预期显示这些图像。

在向独立报表添加文件或链接时,该插件将发出警告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50804524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档