我正在为一个小型库编写测试,在听到了很多关于py.test的好消息后,我决定使用它。
但是,pytest.mark.parameterize
给了我一些问题。一开始,我想也许我只是错配了一些括号,它就去别的地方寻找固定装置了。所以我决定从给定的parameterize示例开始:
@pytest.mark.parametrize("input,expected", [
("3+5", 8),
("2+4", 6),
("6*9", 42),
])
def test_eval(input, expected):
assert eval(input) == expected
但这给出了相同的错误:
未找到装置“input”
可用夹具:capfd、pytestconfig、recwarn、capsys、tmpdir、monkeypatch
使用'py.test --fixtures [testpath]'来获得帮助。
我去谷歌了一下,但我找不到任何适用的答案。有什么办法吗?
编辑:我想知道哪个Python/py.test版本是有帮助的。
Python 3.4.0和py.test 2.6.4
3条答案
按热度按时间qzwqbdag1#
我只是逐字地尝试了你的例子,它在pytest 2.6.4中运行良好。也许你拼错了
parametrize
?您在标题中拼错了它,这是一个常见的错误,可以在this issue中看到。bhmjp9jg2#
这不是同一个原因,但这是谷歌上的第一个结果“pytest parametrize fixture not found”,这是我自然的谷歌与OP相同的错误:
未找到E装置“blah”
在我的情况下,这是由于一个愚蠢的错字(我没有发现太长时间!),缺少装饰器中的@:
btxsgosb3#
在我的例子中,我将一个数据类更改为
@pytest.mark.parametrize
。我忘了
@pytest.mark.parametrize
是一个装饰器。因此,我没有将装饰器放在函数之上,在装饰器和函数之间,还有其他函数。在我的情况下,修复只是重新订购。