gpt4 book ai didi

python - Pytest 从不同的测试用例文件中排序

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:16 25 4
gpt4 key购买 nike

您好,我使用 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 从两个文件运行(因为它已作为 order 2 给出)

所以我在这里注意到的是测试运行的整体排序,而不是单个类/文件的排序

有什么办法可以解决这个问题吗?现在我对所有文件都使用订购号,比如我给出的第一个文件 (1,2) 然后在下一个文件中我给出 (3,4) 并且它工作正常。

但我不想只在我需要的几个地方订​​购所有测试类(class)。是否有任何钩子(Hook)可以说 pytest 仅在特定文件中查看排序?

最佳答案

我假设您正在使用 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)

关于python - Pytest 从不同的测试用例文件中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com