pytest-测试流程顺序

时间:2018-07-26 13:05:10

标签: python pytest

我有一个类似于下面的pytest代码... 如果我使用--count 3运行它,它将运行test_first 3次,然后运行test_second 3次。

如果我希望它运行test_first,test_second并重复该流程怎么办?

谢谢。:)

@pytest.mark.usefixtures('setup')
class TestSomething:

    def run_setup(self):
        pass

    def test_first(self):
        print('test 1')
        name = 'name'
        assert name.isalpha()

    def test_second(self):
        print('test 2')
        name = '12345'
        assert name.isalpha()

2 个答案:

答案 0 :(得分:1)

您可以自己实现它。看一下pytest_collection_modifyitems钩子,您可以在其中更改要执行的测试列表。示例:

# conftest.py
import pytest

def pytest_addoption(parser):
    parser.addoption('--numrepeats', action='store', type=int, default=1)

def pytest_collection_modifyitems(items):
    numrepeats = pytest.config.getoption('--numrepeats')
    items.extend(items * (numrepeats - 1))

当放入测试根目录中的conftest.py文件时,此代码会添加一个新的命令行选项numrepeats,该选项将重复测试运行n次:

$ pytest --numrepeats 3

答案 1 :(得分:0)

基于https://pytest-ordering.readthedocs.io(alpha)插件,您可以执行以下操作:

import pytest

@pytest.mark.order2
def test_foo():
    assert True

@pytest.mark.order1
def test_bar():
    assert True

另请参见Test case execution order in pytest上的讨论。

如果您的测试需要按顺序进行,我个人认为这不是很好的隔离,并且可以进行其他一些测试服设计。