我有一个类似于下面的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()
答案 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上的讨论。
如果您的测试需要按顺序进行,我个人认为这不是很好的隔离,并且可以进行其他一些测试服设计。