pytest 说当我不使用时找不到夹具
pytest says fixture not found when I'm not using one
我正在尝试参数化测试场景,这样我就不必像在 xUnit 样式测试中那样为每个场景制作单独的案例。
这是我试图为自己的用例复制的 pytest 示例。
from datetime import datetime, timedelta
testdata = [
(datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)),
(datetime(2001, 12, 11), datetime(2001, 12, 12), timedelta(-1)),
]
@pytest.mark.parametrize("a,b,expected", testdata)
def test_timedistance_v0(a, b, expected):
diff = a - b
assert diff == expected
以上工作正常,但是当我尝试修改它以供我使用时,如下所示。我收到一条错误消息,指出 "dump" fixture not found。我不明白发生了什么。这是我第一次使用 pytest,所以可能我什么都不懂。
dump1 = load_dump(pathtodump1,pathtodump2) # load_dump can take multiple params
dump2 = load_dump(pathtodump3)
scenarios = [(dump1,{'prod_str':None}),
(dump2,{'prod_str':"123"})]
@pytest.mark.paramaterize("dump,expected_meta", scenarios)
def test_metadump_profiles(dump, expected_meta):
meta = dump.meta
assert meta.prod_str == expected_meta['prod_str']
这是我从 pytest 得到的错误。我还应该提到,当我调试时,测试从未运行过,它在参数化装饰器的某处失败了。
========================================================================= ERRORS ==========================================================================
________________________________________________________ ERROR at setup of test_metadump_profiles _________________________________________________________
file /x/x/x-x/x/x/x/x/x/x/test_x.py, line 81
@pytest.mark.paramaterize("dump,expect_meta", scenarios)
def test_metadump_profiles(dump, expect_meta):
fixture 'dump' not found
available fixtures: capfd, capsys, recwarn, tmpdir_factory, tmpdir, monkeypatch, pytestconfig, record_xml_property, cache
use 'py.test --fixtures [testpath]' for help on them.
.
@pytest.mark.paramaterize
这是无效的,pytest 抛出一个没有意义的模棱两可的错误。这是由拼写错误引起的...
@pytest.mark.parametrize
是有效的拼写。最愚蠢的错误我已经把我的头发拉出来了。
参见 github issue on this topic for more info.
我正在尝试参数化测试场景,这样我就不必像在 xUnit 样式测试中那样为每个场景制作单独的案例。
这是我试图为自己的用例复制的 pytest 示例。
from datetime import datetime, timedelta
testdata = [
(datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)),
(datetime(2001, 12, 11), datetime(2001, 12, 12), timedelta(-1)),
]
@pytest.mark.parametrize("a,b,expected", testdata)
def test_timedistance_v0(a, b, expected):
diff = a - b
assert diff == expected
以上工作正常,但是当我尝试修改它以供我使用时,如下所示。我收到一条错误消息,指出 "dump" fixture not found。我不明白发生了什么。这是我第一次使用 pytest,所以可能我什么都不懂。
dump1 = load_dump(pathtodump1,pathtodump2) # load_dump can take multiple params
dump2 = load_dump(pathtodump3)
scenarios = [(dump1,{'prod_str':None}),
(dump2,{'prod_str':"123"})]
@pytest.mark.paramaterize("dump,expected_meta", scenarios)
def test_metadump_profiles(dump, expected_meta):
meta = dump.meta
assert meta.prod_str == expected_meta['prod_str']
这是我从 pytest 得到的错误。我还应该提到,当我调试时,测试从未运行过,它在参数化装饰器的某处失败了。
========================================================================= ERRORS ==========================================================================
________________________________________________________ ERROR at setup of test_metadump_profiles _________________________________________________________
file /x/x/x-x/x/x/x/x/x/x/test_x.py, line 81
@pytest.mark.paramaterize("dump,expect_meta", scenarios)
def test_metadump_profiles(dump, expect_meta):
fixture 'dump' not found
available fixtures: capfd, capsys, recwarn, tmpdir_factory, tmpdir, monkeypatch, pytestconfig, record_xml_property, cache
use 'py.test --fixtures [testpath]' for help on them.
.
@pytest.mark.paramaterize
这是无效的,pytest 抛出一个没有意义的模棱两可的错误。这是由拼写错误引起的...
@pytest.mark.parametrize
是有效的拼写。最愚蠢的错误我已经把我的头发拉出来了。 参见 github issue on this topic for more info.