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

时间:2016-10-21 03:47:55

标签: pytest

我想将自定义属性(或关键字)添加到我可以在pytest_runtest_logreport期间访问的测试中。

我目前所做的是设置这样的标记 @pytest.mark.TESTID(98157)用于测试,然后在pytest_runtest_logreport中使用report.keywords['TESTID']作为@pytest.mark.JIRA("MyJIRA-124"),返回长度为1且值为98157的元组。到目前为止一切顺利。 但是当我尝试添加另一个带有缺陷ID的标记时,就像report.keywords['JIRA']这个string一样,这给了我整数1。

所以我的问题是我们不能用RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("http://path_to_json_response") .setConverter(new GsonConverter(gson)) .build(); 参数创建参数化标记

如果那可能是我可能的解决方法。

1 个答案:

答案 0 :(得分:2)

不幸的是"报告"在默认的implmentation中不会有这个vaules,因为它只是一个dict,每个键的值为1(source code

我认为最简单的解决方法是改变"报告"是使用pytest_runtest_makereport钩子构造的。它可以这么简单:

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