gpt4 book ai didi

python-3.x - 将属性添加到 junit xml pytest

转载 作者:行者123 更新时间:2023-12-04 13:55:24 29 4
gpt4 key购买 nike

我正在尝试使用自定义属性在 pytest 中创建一个 junit xml 输出文件。
我搜索了答案,发现了 xml_record_attribute 和 record_attribute。

def test(record_attribute):
record_attribute('index', '15')
...
起初我认为它适合我的问题,但后来我意识到需要在每次测试中指定它。
我尝试使用 pytest_runtest_call 钩子(Hook)来完成它,因此它会在每次测试运行中添加属性,而无需在每个测试中显式添加属性。但是后来事实证明你不能在 hook 中使用 fixture (这是有道理的)。
知道如何在不复制代码的情况下向 junit xml 输出文件添加属性吗?
编辑:
我有一个装饰器可以做到这一点的另一个想法。
def xml_decorator(test):
def runner(xml_record_attribute):
xml_record_attribute('index', '15')
test()

reutrn runner
我正在尝试将其与 pytest_collection_modifyitems Hook 并装饰每个测试,但它不起作用。
def pytest_collection_modifyitems(session, config, items):
for item in items:
item.obj = xml_decorator(item.obj)

最佳答案

您可以定义一个自动提供给每个测试用例的 fixture :

import pytest

@pytest.fixture(autouse=True)
def record_index(record_xml_attribute):
record_xml_attribute('index', '15')
备注 record_xml_attribute xunit2 不支持,pytest v6 的默认 junit_family。使用 record_xml_attribute使用 pytest v6,在 pytest.ini
[pytest]
junit_family = xunit1

关于python-3.x - 将属性添加到 junit xml pytest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63451974/

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