添加用户定义的关键字或测试属性
Adding user defined keywords or Test Attribute
我想将自定义属性(或关键字)添加到我可以在 pytest_runtest_logreport
期间访问的测试。
我目前一直在做的就是设置这样的标记
@pytest.mark.TESTID(98157)
用于测试,然后在 pytest_runtest_logreport
中将其用作 report.keywords['TESTID']
,其中 returns 一个长度为 1 的元组,其值为 98157。到目前为止一切顺利。
但是,当我尝试添加另一个具有缺陷 ID 的标记时,如 @pytest.mark.JIRA("MyJIRA-124")
this report.keywords['JIRA']
这给了我整数 1.
所以我的问题是我们可以不使用string
参数
创建参数化标记吗
AND
如果那是我可能的解决方法。
不幸的是"report"在默认实现中不会有这个值,因为它只是一个字典,每个键的值都是 1 (source code)
我认为最简单的解决方法是使用 pytest_runtest_makereport
挂钩更改 "report" 的构造方式。它可以像这样简单:
from _pytest.runner import pytest_runtest_makereport as _makereport
def pytest_runtest_makereport(item, call):
report = _makereport(item, call)
report.keywords = dict(item.keywords)
return report
然后在pytest_runtest_logreport
中,在report.keyword['JIRA']
下你会找到MarkInfo
对象
我想将自定义属性(或关键字)添加到我可以在 pytest_runtest_logreport
期间访问的测试。
我目前一直在做的就是设置这样的标记
@pytest.mark.TESTID(98157)
用于测试,然后在 pytest_runtest_logreport
中将其用作 report.keywords['TESTID']
,其中 returns 一个长度为 1 的元组,其值为 98157。到目前为止一切顺利。
但是,当我尝试添加另一个具有缺陷 ID 的标记时,如 @pytest.mark.JIRA("MyJIRA-124")
this report.keywords['JIRA']
这给了我整数 1.
所以我的问题是我们可以不使用string
参数
AND
如果那是我可能的解决方法。
不幸的是"report"在默认实现中不会有这个值,因为它只是一个字典,每个键的值都是 1 (source code)
我认为最简单的解决方法是使用 pytest_runtest_makereport
挂钩更改 "report" 的构造方式。它可以像这样简单:
from _pytest.runner import pytest_runtest_makereport as _makereport
def pytest_runtest_makereport(item, call):
report = _makereport(item, call)
report.keywords = dict(item.keywords)
return report
然后在pytest_runtest_logreport
中,在report.keyword['JIRA']
下你会找到MarkInfo
对象