即使文件中有两个类并且我们已经为这两个类中的函数定义了顺序,我也会看到这个问题。
例子:
class Test_abc:
@pytest.mark.run(order=1)
def test_func_a(self):
print 'class 1 test 1'
@pytest.mark.run(order=1)
def test_func_b(self):
print 'class 1 test 2'
@pytest.mark.run(order=1)
def test_func_c(self):
print 'class 1 test 3'
class Test_bcd:
@pytest.mark.run(order=1)
def test_func_ab(self):
print 'class 2 test 1'
@pytest.mark.run(order=1)
def test_func_bc(self):
print 'class 2 test 2'
@pytest.mark.run(order=1)
def test_func_cd(self):
print 'class 2 test 3'
输出如下:
class 1 test 1
class 2 test 1
class 1 test 2
class 2 test 1
class 1 test 3
class 2 test 1
我做了这样的事情来解决这个问题
@pytest.mark.run(order=1)
class Test_abc:
def test_func_a(self):
print 'class 1 test 1'
def test_func_b(self):
print 'class 1 test 2'
def test_func_c(self):
print 'class 1 test 3'
@pytest.mark.run(order=2)
class Test_bcd:
def test_func_ab(self):
print 'class 2 test 1'
def test_func_bc(self):
print 'class 2 test 2'
def test_func_cd(self):
print 'class 2 test 3'
输出:
class 1 test 1
class 1 test 2
class 1 test 3
class 2 test 1
class 2 test 2
class 2 test 3
所以,谈到你的问题,我认为你可以尝试这样的事情。我知道这不是您问题的完美答案,但您可以使用此解决方案即兴发挥。我尝试对文件(和文件名)执行此操作。似乎 pytest 编译器被编程为按顺序获取数字或字母。因此,您可能需要将文件命名为test_1_foo.py
andtest_2_bar.py
或test_a.py
andtest_b.py
以按顺序执行它们。但我个人觉得第一种方法更好。