我使用pytest运行器从我的自动化测试框架(Selenium和RestAPI测试)中获取结果输出。我使用pytest-html插件在测试结束时生成一个单页html结果文件。我使用以下命令启动测试运行(从活动的VirtEnv会话)。python -m pytest -v --html="api_name_test.html" --self-contained-html
(it有点复杂,因为我使用powershell脚本来运行它,并提供一个带日期戳的结果文件名,并在完成时通过电子邮件发送文件,但它本质上是上面的命令)
当生成报告时,我打开这个报告html,我发现所有未通过的测试都被扩展了。我想让它使所有行默认折叠(失败,XFailed,Error等)。
我的项目包含一个conftest.py位于目录根的www.example.com文件和一个pytest.ini文件,我在其中指定了测试脚本的目录
在conftest.py我最简单的项目中的www.example.com文件中,我有一个可选的钩子来获取测试的目标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
“默认情况下,除了已通过的行之外,“结果”表中的所有行都将展开。可以使用查询参数自定义此行为:?collapsed=通过,XFailed,跳过”
目前我不确定?collapsed=...
行是否在命令行中,或者conftest作为钩子,或者我需要编辑pytest-html插件附带的默认style.css或main.js?(我也不熟悉CSS,只知道少量的HTML)。我假设它conftest.py作为一个钩子出现在www.example.com文件中,但我真的不知道如何应用它。
2条答案
按热度按时间cclgggtu1#
只是为了添加到@john answer和我尝试过的其他步骤:
出于某种原因
对我不起作用,基于这里的步骤:https://docs.pytest.org/en/latest/reference/customize.html#configuration-file-formats
当使用上述配置时,我得到以下错误:KeyError:'render_collapsed' ValueError:无效的真值'失败,错误'
要解决问题,请执行以下操作:在要运行命令的目录上创建配置文件。在我的例子中,我使用pytest.ini
然后运行:
pytest --html=report.html --self-contained-html
report.html
是报告文件的名称--self-contained-html
使用内联css创建报表。这将允许您简单地共享report.html
文件,而不是共享包含html和css文件的文件夹有关其他配置文件格式(pytest.ini、pyproject.toml、tox.ini、setup.cfg)的更多信息,请参见:https://docs.pytest.org/en/latest/reference/customize.html#configuration-file-formats
t40tm48m2#
https://pytest-html.readthedocs.io/en/latest/user_guide.html#display-options
自动折叠表格行
默认情况下,“结果”(Results)表格中的所有行都将展开,“通过”(Passed)表格中的行除外。
可以使用查询参数自定义此行为:?collapsed=Passed、XFailed、Skipped或通过在配置文件(pytest.ini、setup.cfg等)中设置render_collapsed。
[pytest] render_collapsed = True
注意:与query参数不同,设置render_collapsed将影响所有状态。