4.2 KiB
01 · e2e-core / e2e-heavy 契约改写
Type: task Status: resolved
Question
round-1 的 e2e-core.py(112 例 / 55 端点)与 e2e-heavy.py(6 轮)写于返工前旧契约,约半数调用已死(PUT/DELETE/路径变量/@RequestBody JSON)。全部调用层改写到返工后扁平动作动词契约,保持或显式重定义断言语义,使套件在新契约上可重跑。
要点:
- 逐用例映射:PUT/DELETE → POST 动词、
/{id}→?id=、workspace 进表单字段、roleType→role、PATH_OP 扁平化、@RequestBody → 表单绑定、edit 补 CASversion+isBizNegotiated+isChild——映射坑位直接复用 demo 票 10 对照表(.scratch/customer-e2e/issues/10-demo-contract-sync.md) - 断言语义:旧行为随返工改变的用例(如看板对 pool 从数据返回变 67001 拒绝)断言跟着改并记录改了什么
- 产出:用例×端点矩阵刷新表 + 缺陷用例处置表(D-01 已修复验预期转绿;D-05/D-07/D-04 标「缺陷验证模式」——预期失败、不阻断、不重复排查)
- 静态验收:改写后 grep 零旧契约残留(
PUT|DELETE|/api/customer/\d+/、/{id}拼接等),对照dump_api_out.txt全部调用命中
素材:.scratch/customer-module/API-SUMMARY.md(73 端点权威)、.scratch/customer-rework/dump_api_out.txt、round-1 两脚本(.scratch/customer-e2e/e2e-core.py / e2e-heavy.py)。
Answer
承载方式:复制 r2 版本(.scratch/customer-e2e/e2e-core-r2.py 884 行 / e2e-heavy-r2.py 910 行),不覆盖 round-1 原件,历史可追溯;结果产物落本目录。两脚本 py_compile PASS、UTF-8 无 BOM。
改写内容(全量明细见 matrix-r2.md):
- URL / method 层 34 处:PUT/DELETE → POST 动词、
/{id}→?id=、workspace 进表单字段、POST /api/customer→/create、PATH_OP 扁平化(focus 族)、@RequestBody→ 表单绑定(reminder save 五字段)等;transfer/assign 的List<Long>多值绑定经 Controller 签名实核(params 多值,非 form)。 - 参数 / 出参层 5 处:company-lookup 参数名
companyName(API-SUMMARY §2.3)、联系人补必填 phone、membersroleType→role显式断言、restart_service JVM 候选列表兜底、import_upload加duplicate_strategyseam(票 02 F8 挂点)。 - 同形不改 4 族:Ownership 族、preference saved-view 族(全平台唯一 @RequestBody JSON 例外)、check 族、import upload / transfer 族。
- 断言语义变更 7 处(逐条记录于 matrix-r2.md §二):oplog 白名单 11→17 种、append-only 断言改打未注册
follow/edit端点、confirmSimilar 断言翻转(返工票 04 已销缺口)、F-16 查重单例前提更新、幽灵客户补 phone 聚焦 67002、D-08 续编消歧(round-1 core/heavy 的 D-02 编号冲突)。
缺陷用例处置(matrix-r2.md §三):D-01 预期转绿(已修复验);D-02/D-03 分支保留可能复现;D-04/D-05/D-06/D-07 缺陷验证模式(预期失败、warn 不阻断、不重复排查);新缺陷自 D-08 续编。
静态验收(要点 4)——PASS:
- grep 零旧契约残留(
'PUT'|'DELETE'字面量、sess.put/delete、URL 路径拼接均 0) - 调用×端点对账 55 调用端点 = 54 命中
dump_api_out.txt+ 1 预期例外(POST /api/customer/follow/edit,append-only 断言故意打的未注册端点),零未命中 → calls-r2.json(对账工具 scan_calls.py 保留可复跑) - 客户域 73 端点未覆盖 19:10 个 = 票 02 增量范围(agreement×5、dedup get/save、view-form get/save、company-lookup 的 batch-update),9 个 = round-1 即未覆盖的维持项(ping、
POST /api/customer/page、contact/detail、列偏好 get/save、claim/assign/release-pool 批量三兄弟、reminder 读端点)——不进票 02 票面,票 06 对账附录如实记录 - 两脚本语法与编码验收 PASS(见上)
移交:票 02 输入 = 上述 10 端点新用例 + _upload duplicateStrategy 变体 + detail-head viewTouch 副作用断言 + oplog action 值域断言;票 04 = core→heavy→增量执行顺序、heavy 六轮深度(D-07 计时)现场定。