pytest fixture分层设计:登录、数据和环境隔离

发表评论 2306 浏览量
目录:

pytest fixture分层设计:登录、数据和环境隔离

2022年3月记录,分类「pytest」。这篇更像工作笔记,记录的是一次问题拆解和复用清单。

拆分原则

fixture 写不好,自动化会越来越像一团共享状态。这篇记录的是我把登录、造数、清理和环境配置拆开后的做法,重点是让单条用例可以独立运行。

我更关注它在真实提测流程里怎么落地,而不是单独演示一个命令或脚本。

层级设计

  • session 级只放环境配置和公共 client,不放业务数据。
  • function 级 fixture 负责创建订单、用户、审批单这类会被修改的数据。
  • yield 后清理失败也要记录,不要静默吞掉。
@pytest.fixture
def test_order(api):
    order = api.order.create(status="pending")
    yield order
    api.order.delete(order["id"])

示例

  • 任意一条用例单独跑可以通过。
  • xdist 并发时账号、订单号、缓存 key 不冲突。
  • fixture 名称能看出业务含义,而不是 data1、data2。

执行时最好把截图、请求、响应、日志时间点放在一起,后面复盘会省很多事。

检查标准

fixture 的核心是生命周期管理。生命周期清楚了,很多偶现失败会自然消失。等业务规则再稳定一点,可以把这里的检查点拆成参数化用例。