首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >pytest通过--setup-plan查看fixture执行计划(不实际运行用例)

pytest通过--setup-plan查看fixture执行计划(不实际运行用例)

作者头像
小田测测看
发布2026-06-17 17:54:45
发布2026-06-17 17:54:45
490
举报

pytest --setup-plan 是 pytest 提供的一个实用命令行选项,用于预览执行测试前预览测试用例的 setup/teardown ,理解测试用例的前后置操作流程,排查测试依赖或资源准备的问题。

作用

  • • 不实际执行测试代码,仅展示测试用例的前置操作(setup)后置操作(teardown) 的执行顺序和层级关系。
  • • 清晰显示测试函数、测试类与 fixture 的调用关系,包括 fixture 的作用域(function/class/module/session)。

场景

  1. 1. 复杂 fixture 依赖调试:当测试用例依赖多个 fixture 且存在嵌套关系时,预览执行计划可确认依赖顺序是否正确。
  2. 2. 资源释放逻辑验证:检查 teardown 操作是否按预期在测试结束后执行(如数据库连接关闭、临时文件清理)。
  3. 3. 测试结构优化:通过预览 setup/teardown 重复执行次数,优化 fixture 作用域(如将 function 级提升为 module 级减少重复操作)。

基础用法

1.命令格式

代码语言:javascript
复制
pytest --setup-plan [测试文件/目录]

2. 示例演示

假设有测试文件 test_demo.py

代码语言:javascript
复制
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,输出如下:

代码语言:javascript
复制
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_fixture

1.前缀含义

  • SETUP:前置操作(setup)
  • TEARDOWN:后置操作(teardown)
  • • 后缀字母表示作用域:
    • F(function):函数级(默认)
    • C(class):类级
    • M(module):模块级
    • S(session):会话级

2. 执行顺序逻辑

  • • 作用域级别高的 fixture 先执行 setup(如 module 级比 function 级先执行)。
  • • 同一作用域内,依赖关系决定执行顺序(被依赖的 fixture 先执行)。
  • • Teardown 操作与 setup 顺序相反(类似栈结构:先 setup 的后 teardown)。

1. 结合 -v 查看详细信息

添加 -v(verbose)选项可显示更完整的依赖关系:

代码语言:javascript
复制
pytest --setup-plan -v test_demo.py

输出会包含每个 fixture 的依赖链(如 (fixtures used: module_fixture))。

pytest --setup-plan 是调试测试前后置逻辑的高效工具,尤其适合包含多个 fixture 或复杂依赖关系的测试场景

#Pytest

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程拾光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作用
  • 场景
  • 基础用法
  • 1.命令格式
  • 2. 示例演示
  • 1.前缀含义
  • 2. 执行顺序逻辑
  • 1. 结合 -v 查看详细信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档