首页/开发/软件测试速查/pytest fixture 夹具
自动化测试66 条

pytest fixture 夹具

fixture 用 @pytest.fixture 声明可复用的前置资源(连接、临时数据、浏览器),通过参数注入用例;scope 控制生命周期,yield 之后执行清理。

软件测试速查开发更新于 2026-10-12

夹具示例

夹具示例
import pytest


@pytest.fixture
def db():
    conn = connect()
    yield conn
    conn.close()


def test_query(db):
    assert db.query("select 1") == 1

scope 取值

scope生命周期
function每个用例一次(默认)
class每个测试类一次
module每个模块一次
session整个会话一次
session 级夹具产出的对象被用例修改会串场;用前想清楚状态的归属与复位方式。

易错点

  • 数据库连接、浏览器等重资源用 function 级作用域创建,整体执行时间被放大
  • yield 之后的清理未覆盖异常路径,应配合 try/finally 或 addfinalizer

数据来源与参考

  • pytest 官方文档:Fixtures(docs.pytest.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌