已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
背景:我维护一套 B 端 SaaS 的接口自动化(pytest + requests,约 350 条用例),团队 4 人,后端 Java + Spring Boot,前端 React。每次发版前跑一轮回归,CI 上大约 20 分钟跑完。
现象:断言粒度成了团队里最大的"内耗点",具体表现有三种:
assert resp["data"]["order"]["status"] == "PAID")——后端改一次字段名、加一个嵌套层级,20 条用例全碎,修断言的时间比写业务代码还长。就像把一栋楼的每根钉子都编了号,装修换个门把手,你得重新编号 20 个钉子。status_code == 200 + data 不为空)——上周一次 P2 事故就是这么漏掉的:接口返回 200 但 amount 字段被后端误改成了字符串,前端没报错(JS 里 "0.01" * 100 不会炸),直到财务对账才发现。断言太粗等于"只看了快递箱没拆"。已尝试:
assert_schema(resp, schema_dict) 工具函数,用 jsonschema 做结构校验——治好了"字段名改了就碎"的问题,但"字段值改错"这类还是得手动写,而且 schema 文件本身又成了新的维护负担(改一次接口要同步改 schema,和改断言没本质区别);期望得到的答案形态:
欢迎带具体代码片段、schema 文件结构、CI 配置来聊,越具体越好。