添加用户定义的关键字或测试属性

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对象