所以我有以下结构:
class Test(object):
def test_1(self):
pass
def test_2(self):
pass
def test_3(self):
pass
它运行得很好,现在我正在添加“方案”(正如pytest - A quick port of “testscenarios”推荐的那样):
def pytest_generate_tests(metafunc):
idlist = []
argvalues = []
for scenario in metafunc.cls.scenarios:
idlist.append(scenario[0])
items = scenario[1].items()
argnames = [x[0] for x in items]
argvalues.append(([x[1] for x in items]))
metafunc.parametrize(argnames, argvalues, ids=idlist)
class Test(object):
scenarios = ['1' {'arg':'value1'},
'2' {'arg':'value2'}]
def test_1(self, arg):
pass
def test_2(self, arg):
pass
def test_3(self, arg):
pass
当我运行测试顺序错误时,我得到:
test_1[1]
test_1[2]
test_2[1]
test_2[2]
test_3[1]
test_3[2]
看起来并不像Test类的场景。
问题:是否有任何解决方案以正确的顺序运行它?像:
test_1[1]
test_2[1]
test_3[1]
test_1[2]
test_2[2]
test_3[2]
答案 0 :(得分:5)
即将推出的pytest-2.3支持更好的(基于资源的)排序,我刚刚更新了文档中的场景示例:https://docs.pytest.org/en/latest/example/parametrize.html#a-quick-port-of-testscenarios
您可以使用
初步安装当前的开发版本pip install -i http://pypi.testrun.org -U pytest
并且应该使用“py.test --version”获得pytest-2.3.0.dev15并且能够使用它。