在软件测试实践中,pytest 框架里的 fixture 装饰器承担了哪些职责,其默认值又该如何理解?
考察说明
考查对 pytest fixture 核心概念及默认作用域的掌握情况。
回答思路
- 【回答框架 1】fixture 是 pytest 中用于提供测试前置条件和资源管理的机制,通过装饰器标记函数,实现测试数据的准备、清理以及共享。
- 【回答框架 2】fixture 的默认作用域为 function,即每个测试函数执行前都会调用一次,确保测试隔离性。
- 【回答框架 3】fixture 支持依赖注入,测试函数通过参数名引用 fixture,pytest 会根据名称自动匹配并注入返回值。
- 【回答框架 4】fixture 还可以通过 yields 实现 teardown 操作,在测试结束后自动执行清理代码,保证资源释放。
- 【关键点 1】fixture 装饰器用于标记资源准备函数,默认作用域是 function。
- 【关键点 2】fixture 通过参数引用实现依赖注入,返回值供测试使用。
- 【关键点 3】利用 yield 可以实现测试后自动清理,也就是 teardown 逻辑。
- 【关键点 4】作用域可设置为 module、class、session 以控制资源复用范围。
- 【易错点 1】混淆 fixture 作用域,误以为默认是 session,导致测试间数据污染。
- 【易错点 2】未使用 yield 或 request.addfinalizer 导致资源无法释放。
- 【易错点 3】忽略 fixture 的自动使用参数 autouse,导致部分测试意外执行无关设置。