已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
背景:我维护一套 B 端 SaaS 的接口自动化(Python 3.11 + pytest 7 + httpx,约 400 条用例),后端 Java + Spring Boot。很多用例的造数不是"一步到位",而是一条 5~6 步的依赖链,比如:创建企业 → 创建部门 → 创建用户 → 分配角色 → 创建订单 → 发起支付,最后一步才是我要测的目标接口(比如"支付回调")。这些步骤我用 @pytest.fixture 串起来,scope=function 保证隔离。
现象:链一长,调试体验就崩了,具体卡点有三个:
KeyError: 'payment_id'),但根因可能是第 2 步"创建部门"返回的结构变了(后端加了嵌套层级)。我得翻 5 个 fixture 的源码才能猜出哪步出了问题,一次 debug 平均 15~20 分钟,比写新用例还慢。companyName 改成了 name,我 grep 了 40 个文件才修完,因为 fixture 链里每一层都硬编码了上一步的返回字段名。已尝试的排查:
pytest --setup-show 看 fixture 执行顺序——能看到顺序,但看不到每步的入参和返回值,等于"知道谁先谁后,不知道谁挂了";logging.info 打印关键返回值——日志确实有了,但散落在 stdout 里,400 条用例跑完日志 2 万行,找一条特定用例的链路要 Ctrl+F 三轮;期望得到的答案形态:
欢迎带具体代码片段、fixture 结构、CI 日志样例来聊,越具体越好。