pytest --setup-plan 是 pytest 提供的一个实用命令行选项,用于预览执行测试前预览测试用例的 setup/teardown ,理解测试用例的前后置操作流程,排查测试依赖或资源准备的问题。
pytest --setup-plan [测试文件/目录]假设有测试文件 test_demo.py:
import pytest
# 定义fixture
@pytest.fixture(scope="module")
defmodule_fixture():
print("模块级前置操作")
yield
print("模块级后置操作")
@pytest.fixture
deffunction_fixture():
print("函数级前置操作")
yield
print("函数级后置操作")
# 测试类
classTestDemo:
deftest_case1(self, module_fixture, function_fixture):
assert1 == 1
deftest_case2(self, function_fixture):
assert"a" == "a"执行 pytest --setup-plan test_demo.py,输出如下:
collected 2 items
test_demo.py
SETUP M module_fixture
SETUP F function_fixture (fixtures used: module_fixture)
test_demo.py::TestDemo::test_case1 (fixtures used: function_fixture, module_fixture)
TEARDOWN F function_fixture
SETUP F function_fixture (fixtures used: module_fixture)
test_demo.py::TestDemo::test_case2 (fixtures used: function_fixture, module_fixture)
TEARDOWN F function_fixture
TEARDOWN M module_fixtureSETUP:前置操作(setup)TEARDOWN:后置操作(teardown)F(function):函数级(默认)C(class):类级M(module):模块级S(session):会话级module 级比 function 级先执行)。-v 查看详细信息添加 -v(verbose)选项可显示更完整的依赖关系:
pytest --setup-plan -v test_demo.py输出会包含每个 fixture 的依赖链(如 (fixtures used: module_fixture))。
pytest --setup-plan 是调试测试前后置逻辑的高效工具,尤其适合包含多个 fixture 或复杂依赖关系的测试场景
#Pytest