【问题标题】:py.test parametrize `pytest.param` not found?py.test 参数化`pytest.param` 没有找到?
【发布时间】: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'

文档有错吗?我是否遗漏了一些我没有正确设置环境的东西?

【问题讨论】:

    标签: python pytest


    【解决方案1】:

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

    pip install -U "pytest>=3.1.0"
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2019-05-25
      相关资源
      最近更新 更多