【发布时间】:2017-05-30 18:14:01
【问题描述】:
在尝试使单元测试(使用 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
在示例中显示different ways to parametrize。
上面的方法正是我想要做的(给出参数和每组参数的 ID):我的函数只会输出pytest.param 对象的列表。但是,当我运行上面的 sn-p(或来自 pytest.org 的完整的)时,我得到了以下错误(pycharm ide 也突出显示了这个语法错误):
E AttributeError: module 'pytest' has no attribute 'param'
文档有错吗?我是否遗漏了一些我没有正确设置环境的东西?
【问题讨论】: