pytest.mark.parameterize not"发现"灯具

时间:2015-03-09 13:29:03

标签: python pytest

我正在为一个小型库编写测试,并且在听了很多关于它的好事后我决定使用py.test。

然而,pytest.mark.parameterize给了我一些问题。起初,我想也许我只是错了一些parens而且它在其他地方寻找固定装置。所以我决定从给定的参数化示例开始:

@pytest.mark.parametrize("input,expected", [
    ("3+5", 8),
    ("2+4", 6),
    ("6*9", 42),
])
def test_eval(input, expected):
    assert eval(input) == expected

但这会产生同样的错误:

  

未找到夹具'输入'

     

可用的灯具:capfd,pytestconfig,recwarn,capsys,tmpdir,monkeypatch

     

使用'py.test --fixtures [testpath]'获取有关它们的帮助。

我去谷歌搜索,但我找不到任何适用的答案。关于如何处理这个的任何想法?

编辑:我想知道哪些Python / py.test版本有用。

Python 3.4.0和py.test 2.6.4

2 个答案:

答案 0 :(得分:7)

我刚刚逐字尝试了你的例子,它在pytest 2.6.4中运行良好。也许你拼错了parametrize?你在标题中拼写错误,这是一个常见的错误,如this issue中所示。

答案 1 :(得分:-1)

这不是同一个原因,但这是谷歌上“找不到pytest参数化夹具”的第一个结果,这是我的自然谷歌与OP相同的错误:

<块引用>

未找到 E 装置 'blah'

在我的情况下,这是由于一个愚蠢的错字(我很久没有发现!),缺少装饰器的@:

pytest.mark.parametrize("blah", [50, 100])
def test_something(blah):
    assert blah > 0