pytest-xdist并发执行时的数据隔离
2024年2月记录,分类「pytest」。这是一篇偏实战的记录,保留了当时的判断过程和后续沉淀。
并发后暴露的问题
xdist 能缩短执行时间,也会把共享数据问题一次性暴露出来。账号、订单号、缓存 key、临时文件都需要隔离。
这类问题如果只写结论,过一段时间就很难复用,所以我把判断依据也留了下来。
隔离策略
- 用 worker_id 给测试数据加后缀。
- 每个 worker 使用独立账号池或独立租户。
- teardown 失败时记录残留数据,方便清理。
@pytest.fixture
def unique_user(worker_id):
return f"qa_user_{worker_id}_{uuid.uuid4().hex[:6]}"
命名规则
- 并发执行结果和串行执行一致。
- 失败不是因为数据被其他用例改掉。
- 测试数据残留有清理脚本。
如果要自动化,我会先挑稳定、关键、失败后能定位的部分,不急着全量脚本化。
验收
并发自动化的难点不是启动多个进程,而是让每个进程拥有自己的干净现场。这个记录后续还可以继续补真实缺陷样本,让它从笔记变成团队检查清单。