gpt4 book ai didi

python - 自定义 junitxml Pytest 报告以从自定义标记添加多个属性

转载 作者:行者123 更新时间:2023-12-04 14:00:45 25 4
gpt4 key购买 nike

我的测试套件中的每个测试用例都有多个与之关联的属性,我希望将这些属性包含在 XML( junit-xml ) 报告中。
下面的代码片段给出了一个清晰的画面。

@data(*get_csv_data("csv/blah.csv"))
@unpack
@pytest.mark.run(order=70)
@pytest.mark.webtest.with_args(jira="QA5555", second="second_arg_add")
def test_your_stuff(self,arg1, arg2):
# Actual Test

自定义报表时,在 pytest-html 插件中添加属性很容易,通过在 extraspytest-html 属性中添加参数,如下所示。

conftest.py
@pytest.mark.hookwrapper
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':
extra.append(pytest_html.extras.text("<blah>")
report.extra = extra

另外,我可以轻松获得属性
item.keywords.get('webtest').kwargs

我怎样才能对 junitxml 做同样的事情?

一些发现——
  • junitxml 没有 extras
  • record_xml_property 我不想使用它,因为它是测试中的功能。使用装饰器添加多个参数看起来也是一个不错的方法。我不想妨碍代码的可读性。
    def test_function(record_xml_property):
    record_xml_property("key", "value")
    assert 0
  • 以下方法
    if hasattr(request.config, "_xml"):
    request.config._xml.add_custom_property(name, value)

    我无法在钩子(Hook) request 中获取 def pytest_runtest_makereport(item, call): 对象item.config._xml 指向 LogXML 中的 junit-xml,而 add_custom_property 又没有与之关联的方法 junitxml

  • 所以,
    向 ojit_code 添加更多属性的最佳方法是什么,使其大致如下所示 -
    <testcase classname="test_function" file="test_function.py" line="0" name="test_function" time="0.0009">
    <properties>
    <property name="jira" value="1234566" />
    </properties>
    </testcase>

    或者像这样
    <testcase classname="test_function" file="test_function.py" line="0" name="test_function" time="0.0009" jira="2345667">
    </testcase>

    最佳答案

    因此,看起来没有简单的方法可以实现这一目标。当前不支持 pytest .目前标记为 feature request .

    关于python - 自定义 junitxml Pytest 报告以从自定义标记添加多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46677894/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com