2017-05-30 76 views
0

虽然试图使单元测试(使用py.test)更通用,我正在编程生成测试。 - 我有一个函数可以输出参数和测试结束时的不变量。py.test parametrize`pytest.param`找不到?

现在为了保持整洁,我也希望通过测试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对象的列表。然而,当我跑上面的代码(或完全从一个pytest.org)我提示以下错误(也pycharm IDE突出了这种语法错误):

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

是文档错了吗?我错过了没有正确设置环境的地方吗?

回答

1

pytest.param只有recently been implemented。要使用它,请确保您使用py.test版本3.1.0或更高版本。

pip install -U "pytest>=3.1.0"