Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使pytest html单个html报告结果文件的所有行默认为折叠状态?_Python 3.x_Pytest_Pytest Html - Fatal编程技术网

Python 3.x 如何使pytest html单个html报告结果文件的所有行默认为折叠状态?

Python 3.x 如何使pytest html单个html报告结果文件的所有行默认为折叠状态?,python-3.x,pytest,pytest-html,Python 3.x,Pytest,Pytest Html,我使用pytestrunner从我的自动化测试框架(Selenium和RestAPI测试)中获取结果的输出。我使用pytest html插件在测试结束时生成一个单页html结果文件。我使用以下命令(从活动的VirtEnv会话)启动测试运行 python-mpytest-v--html=“api\u name\u test.html”--自包含html (这有点复杂,因为我使用powershell脚本来运行它,并提供一个带日期戳的结果文件名,并在完成后通过电子邮件发送文件,但基本上是上面的命令)

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

python-mpytest-v--html=“api\u name\u test.html”--自包含html

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

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

我的项目包含一个目录根目录下的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页面提到可以使用显示查询来折叠具有各种结果的行,但没有提到在何处输入这些信息。

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

目前我不确定是命令行中的
?collapsed=…
行,还是作为钩子的conftest,还是需要编辑pytest html插件附带的default style.css或main.js?(另外,我不熟悉css,只知道少量html)。我假设它作为一个钩子出现在conftest.py文件中,但并不真正理解如何应用它。

自动折叠表行

默认情况下,结果表中的所有行都将展开,但已通过的行除外

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

[pytest] render_collapsed=True


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

查询参数将传递给生成的HTML报告,因此,例如,当您在浏览器中打开它时,请使用URL
file:///path/to/report.html?collapsed=Passed,X失败,已跳过
。这是你不能从钩子里适应的,因为。我看到的唯一方法是将
main.js
文件替换为不带
if(collapsed.includes(elem.innerHTML))
check的文件。太棒了,谢谢@hoefling,我找不到任何指示如何使用该选项的地方。我将尝试使用JS文件进行实验,看看是否可以让它实现我想要的功能。感谢@john,pytest.ini render_collapsed选项很好。您提供链接的文档仍然没有提到您实际将?collapsed参数放在哪个文件中,这是我问这个问题时感到困惑的基础。