已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
背景:我负责一套 B 端 SaaS 的接口自动化(Python + requests + pytest,约 400 条用例),数据层是 MySQL。用例普遍是「造数 → 调接口 → 断言」的三段式,造数靠直接调内部 admin 接口或写库脚本。
现象:单跑全绿,CI 上用 pytest-xdist 并发(-n 8)跑回归时,大约有 5% 的用例会随机失败,典型报错是「订单不存在」「库存不足」「断言的列表长度对不上」。手动重跑又全绿。基本可以确定是并发用例之间共享了同一批测试账号 / 同一张表的数据,互相覆盖了——比如 A 用例刚造了一个订单,B 用例把同一个账号的订单状态推进了,A 的断言就崩了。
已尝试的排查:
--forked 每用例一个进程,但感觉要么成本太高、要么没解决共享字典表的问题。期望得到的答案形态:
欢迎带具体配置(xdist worker 数、分库方案、造数脚本结构)来聊,越具体越好。