py.test参数未找到pytest.param

pau*_*l23 3 python pytest

在尝试使单元测试(使用py.test)更通用时,我以编程方式生成了测试。-我有一个函数可以导出参数和在测试结束时保持不变的变量。

现在,为了保持整洁,我还希望通过测试的ID。查看pytest的官方(?)文档,我注意到:

import pytest

from datetime import datetime, timedelta

# ...

@pytest.mark.parametrize("a,b,expected", [
    pytest.param(datetime(2001, 12, 12), datetime(2001, 12, 11),
                 timedelta(1), id='forward'),
    pytest.param(datetime(2001, 12, 11), datetime(2001, 12, 12),
                 timedelta(-1), id='backward'),
])
def test_timedistance_v3(a, b, expected):
    diff = a - b
    assert diff == expected
Run Code Online (Sandbox Code Playgroud)

在例子中展示了参数化的不同方法

上面的方法正是我想要做的(给出参数以及每组参数的ID):我的函数只会输出一个pytest.param对象列表。但是,当我运行以上代码段(或pytest.org的完整代码段)时,出现以下错误(pycharm ide也突出显示了此语法错误):

E AttributeError: module 'pytest' has no attribute 'param'

文档是否有误?我是否缺少某些环境设置不正确的东西?

Nil*_*ner 5

pytest.param直到最近才被实施。要使用它,请确保您使用的是py.test版本3.1.0或更高版本。

pip install -U "pytest>=3.1.0"
Run Code Online (Sandbox Code Playgroud)