pytest
是一个流行的 Python 测试框架,它允许开发者编写和运行测试用例。默认情况下,pytest
会按照文件中的测试函数定义的逆序来执行测试。如果你发现测试的执行顺序不符合预期,可以通过以下几种方法来调整执行顺序:
pytest.mark.run(order=n)
你可以使用 pytest.mark.run
标记来指定测试函数的执行顺序。数字越小,优先级越高。
import pytest
@pytest.mark.run(order=1)
def test_first():
assert True
@pytest.mark.run(order=2)
def test_second():
assert True
@pytest.mark.run(order=3)
def test_third():
assert True
pytest_collection_modifyitems
钩子你可以在 conftest.py
文件中定义 pytest_collection_modifyitems
钩子来自定义测试项的收集和排序。
def pytest_collection_modifyitems(config, items):
items.sort(key=lambda x: x.name)
pytest.mark.skipif
和 pytest.mark.xfail
如果你有特定的测试用例需要在特定条件下跳过或标记为失败,可以使用 pytest.mark.skipif
和 pytest.mark.xfail
。
import pytest
@pytest.mark.skipif(True, reason="Skipping this test")
def test_skip():
assert False
@pytest.mark.xfail(reason="Expected to fail")
def test_expected_fail():
assert False
pytest.ini
配置文件你可以在项目的根目录下创建一个 pytest.ini
文件,通过配置文件来调整测试的执行顺序。
[pytest]
addopts = -v
python_functions = test_*
python_classes = Test*
python_files = test_*.py
pytest-dependency
pytest-dependency
是一个插件,可以用来管理测试之间的依赖关系。
首先,安装插件:
pip install pytest-dependency
然后在测试函数中使用 depends
参数:
import pytest
@pytest.mark.dependency()
def test_first():
assert True
@pytest.mark.dependency(depends=["test_first"])
def test_second():
assert True
通过以上方法,你可以灵活地调整 pytest
测试用例的执行顺序,确保测试按照预期的顺序运行。
领取专属 10元无门槛券
手把手带您无忧上云