【发布时间】:2015-05-10 16:19:44
【问题描述】:
我正在为一个小型库编写测试,在听到很多关于它的好消息后,我决定使用 py.test。
但是,pytest.mark.parameterize 给了我一些问题。起初,我想也许我只是错配了一些括号,然后它就开始在别处寻找固定装置了。所以我决定从给定的参数化示例开始:
@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
【问题讨论】:
-
您使用的是哪个 python 和 py.test 版本?你的代码对我有用。
-
我想这会有所帮助。 Python 3.4 和 py.test 2.6.4,我会将其编辑到问题中。
-
和我一模一样(嗯,python 3.4.2)。您是否尝试过重新安装 py.test,因为设置中可能有一些奇怪的东西?单独运行该代码会显示错误,还是需要任何其他代码/环境变量/配置文件?
-
我尝试重新安装,但问题仍然存在。 :/ 不需要额外的配置或设置。我使用 virtualenv/virtualenvwrapper 单独运行它。我在 py.test 的错误跟踪器中提出了一个问题,以查看维护人员是否可以提供一些启示。
-
@matsjoyce 原来我不是一个很好的拼写者,它是
parametrize而不是parameterize。我将代码复制粘贴到 SO 表单中,但在我的脚本中手动编写,这解释了为什么它为你运行而不是为我运行。