【问题标题】:How do i make all rows of pytest-html single html report result file default to a collapsed state?如何使 pytest-html 单个 html 报告结果文件的所有行默认为折叠状态?
【发布时间】:2018-07-26 05:59:50
【问题描述】:

我使用 pytest 运行程序从我的自动化测试框架(Selenium 和 RestAPI 测试)中获取结果输出。我使用 pytest-html 插件在测试结束时生成单页 html 结果文件。我使用以下命令(来自活动的 VirtEnv 会话)启动测试运行。

python -m pytest -v --html="api_name_test.html" --self-contained-html

(它有点复杂,因为我使用了一个 powershell 脚本来运行它并提供一个带有日期时间戳的结果文件名,并在完成时通过电子邮件发送文件,但它本质上是上面的命令)

当生成报告并打开此报告 html 时,我发现所有未通过的测试都已展开。我想让它默认折叠所有行(失败、XFailed、错误等)。

我的项目在目录根目录下包含一个 conftest.py 文件和一个 pytest.ini 文件,我在其中指定了测试脚本的目录

在我最简单的项目中的 conftest.py 文件中,我有一个可选的钩子来获取测试的目标 url 并将其放入报告摘要中:

import pytest
from py._xmlgen import html
import os
import rootdir_ref
import simplejson

@pytest.mark.optionalhook
def pytest_html_results_summary(prefix):
    theRootDir = os.path.dirname(rootdir_ref.__file__)
    credentials_path = os.path.join(theRootDir, 'TestDataFiles', 'API_Credentials.txt')
    target_url = simplejson.load(open(credentials_path)).get('base_url')
    prefix.extend([html.p("Testing against URL: " + target_url)])

Github 页面提到显示查询可用于折叠具有各种结果的行,但没有提及输入此信息的位置。 https://github.com/pytest-dev/pytest-html

“默认情况下,Results 表中的所有行都将展开,除了已通过的行。可以使用查询参数自定义此行为:?collapsed=Passed,XFailed,Skipped”

目前我不确定?collapsed=... 行是否进入命令行,或者 conftest 作为钩子,或者我是否需要编辑 pytest-html 插件附带的默认 style.css 或 main.js ? (另外我不熟悉css,只知道少量的html)。我假设它作为钩子进入 conftest.py 文件,但并不真正了解如何应用它。

【问题讨论】:

  • 查询参数被传递给生成的 HTML 报告,例如在浏览器中打开它时,使用 URL file:///path/to/report.html?collapsed=Passed,XFailed,Skipped。这是您无法从钩子中适应的东西,因为the collapsing of test blocks is handled entirely in main.js。我看到的唯一方法是将main.js 文件替换为没有if (collapsed.includes(elem.innerHTML)) 检查的文件。
  • 太棒了,谢谢@hoefling,我找不到任何指示如何使用该选项的地方。我会尝试使用 JS 文件,看看我是否可以让它做我想做的事情。

标签: python-3.x pytest pytest-html


【解决方案1】:

https://pytest-html.readthedocs.io/en/latest/user_guide.html#display-options

自动折叠表格行

默认情况下,结果表中的所有行都会被展开,除了那些已经通过的行。

可以使用查询参数自定义此行为:?collapsed=Passed,XFailed,Skipped 或通过在配置文件(pytest.ini、setup.cfg 等)中设置 render_collapsed。

[pytest] render_collapsed = True

注意:与查询参数不同,设置 render_collapsed 会影响所有状态。

【讨论】:

  • 感谢@john,很高兴知道 pytest.ini render_collapsed 选项。您提供链接的文档仍然没有提及实际将 ?collapsed 参数放入哪个文件,这是我问这个问题时感到困惑的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
相关资源
最近更新 更多