Skip to content
🔗 分享本题
查看我的学习进度 →

28 模块 Q3 教学图:fixture 的生命周期和作用域怎么控制?

🧠 图解记忆:Fixture 默认取最小作用域,只有昂贵且安全只读时才扩大共享;点击图片可查看原图。

**生命周期:** setup(准备)→ 执行 → teardown(清理)。
  • pytest 用 yield 实现"执行前准备 + 执行后清理"(yield 前是 setup,yield 后是 teardown);
  • Go 里对应 t.Cleanup / TestMain,或 setup() / teardown() 成对函数。

作用域(pytest): function(默认,每个用例独立)、class、module、session(全进程共享一次)。

选择逻辑: 共享成本高的(连库、起服务)往上提,有状态的往下沉。session 级共享要小心状态污染,function 级最安全但最慢。

加分项: 说出"fixture 依赖注入"——fixture 可以依赖另一个 fixture,pytest 自动解析依赖图。

常见追问: session 级共享的数据库连接如何防止状态污染?(每个用例独立事务/独立 schema,或用 savepoint 回滚)