已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
15 年测试开发,负责一条 B 端 SaaS 订单+结算链路的接口自动化仓库:Python 3.11 + pytest 7.4 + httpx,约 1200 个用例,跑在共享 staging(MySQL 8 + Redis 7)。近半年线上出了 2 次 P2,复盘下来都不是「接口挂了」,而是断言对响应内容不敏感、恒通过——比如某查询接口后端把 status 恒置成 SUCCESS,而用例只写了 assert data["status"] is not None,全程全绿。
我按正则把 is not None / == 200 / len(...) > 0 这类弱断言扫了一遍(约 18%),治理后还剩一批正则抓不到、但实际恒真的断言:
assert resp.json()["orderList"]:后端只要返回非空数组(哪怕内容全错)就过;assert result.get("code") in (0, 200, "0"):枚举兜底写得太宽,等于没断言;assert set(keys) >= {"id", "amount"}:只断言键存在、不断言值;assert True 之后跟一段「打印日志人工看」的伪断言,约 30+ 处。这类断言的共性:结构上是真断言(正则不报),语义上对业务正确性零区分度。
我看过站内关于弱断言分层、变异测试、用例价值分的内容,思路对得上,但**「正则漏掉的那一层」还没有可直接抄的落地清单或量化门禁**,所以专门提出来请教。