您好我使用pytest并在文件夹中有2个py文件。
test_abc.py如下:
class MyTest(unittest.TestCase):
@classmethod
def setup_class(cls):
cls.a = 10
@classmethod
def teardown_class(cls):
cls.a = 20
@pytest.mark.run(order=2)
def test_method1(self):
logging.warning('order2 in test_abc')
assert (10,self.a) # fail for demo purposes
@pytest.mark.run(order=1)
def test_method2(self):
logging.warning('order1 in test_abc')
assert 0, self.db # fail for demo purposes
test_sample2.py如下,
class MyTest1(unittest.TestCase):
@classmethod
def setup_class(cls):
cls.a = 10
@classmethod
def teardown_class(cls):
cls.a = 20
@pytest.mark.run(order=2)
def test_mtd1(self):
logging.warning('order2 in test_samp')
assert (10,self.a) # fail for demo purposes
@pytest.mark.run(order=1)
def test_mtd2(self):
logging.warning('order1 in test_samp')
assert 0, self.db # fail for demo purposes
现在我使用命令运行:
py.test --tb=long --junit-xml=results.xml --html=results.html -vv
这里发生的是test_method2,两个测试用例文件首先运行(因为它已经作为order1给出),然后test_method1从两个文件运行(因为它已按顺序2给出)
所以我在这里注意到的是Ordering总体上是测试运行而不是单个类/文件
有什么方法可以解决这个问题吗?现在我使用所有的订购号码,如第一个文件我给(1,2)然后在下一个文件我给(3,4),它工作正常。
但我不想在所有测试课程中订购,只需要在我需要的几个地方。是否有任何钩子说pytest只能在特定文件中订购?
答案 0 :(得分:3)
我假设您正在使用pytest-ordering插件 - 如果您的测试中只有特定区域需要排序,您可以使用相对排序:
@pytest.mark.run(after='test_second')
def test_third():
assert True
def test_second():
assert True
@pytest.mark.run(before='test_second')
def test_first():
assert True
参考:(http://pytest-ordering.readthedocs.org/en/develop/#relative-to-other-tests)