claude code编写接口自动化用例调用链路

2 阅读3分钟

Redis 测试用例生成 — 完整调用链路

阶段一:系统上下文自动注入(对话开始前,无 tool call)

系统自动加载 →
  ├── CLAUDE.md          项目架构、命令、fixture用法、代码规范
  ├── MEMORY.md 索引      历史记忆指针(踩坑经验、输出规范等)
  ├── Skill 触发规则      只有一行描述,不含具体内容
  └── git status          当前分支、文件状态

此时已知道:项目是什么、怎么跑测试、历史上有什么教训(标题级别)、有哪些 skill 可用。

阶段二:触发 Skill(第一个显式 tool call)

识别到用户要写 Redis 测试
  │
  ▼
Skill(redis-test-generator)
  │
  返回完整 prompt:
  ├── 10步 Workflow
  ├── API 分类表
  ├── 三层架构规则
  ├── 测试文件模板
  ├── 优先级规则(P0-P3)
  ├── 响应处理最佳实践
  ├── Service 方法命名规范
  └── Lessons Learned 系统要求

阶段三:按 Skill Workflow 执行研究(并行 Read/Grep/Glob)

Skill 的 Workflow 第1步明确要求先读 lessons_learned:

并行读取 →
  ├── references/lessons_learned.md       ← Skill第1步:读踩坑记录
  ├── redis_apis_summary.md               ← Skill第6步:确认API测试状态
  ├── prompt_template_for_test_cases.md   ← 补充模板参考
  ├── 对应 {domain}_service.py            ← Skill第4步:检查service层方法
  └── jdcloud_sdk/.../ApiNameRequest.py   ← Skill第5步:了解SDK参数

如果需要更多上下文,还会读:

  ├── 同 domain 下已有测试文件             ← 学习现有模式
  ├── base_fixtures.py                    ← 确认可用 fixtures
  └── conftest.py                         ← 确认 markers、命令行参数

阶段四:编写代码(Write/Edit)

判断是否需要新增 service 方法
  │
  ├── 需要 → Edit {domain}_service.py,添加方法 + SDK import
  │
  ▼
Write test_cases/{domain}/test_{ApiName}Request.py
  ├── 遵循 Skill 模板
  ├── 遵循 CLAUDE.md 规范(中文注释、Tuple[bool,Any]、fixture注入)
  └── 规避 lessons_learned 中的已知坑

阶段五:运行验证(Bash)

Bash: pytest test_cases/redis/test_cases/{domain}/test_{ApiName}Request.py -v -s
  │
  ├── 通过 → 进入阶段六
  └── 失败 → 分析原因 → 修复 → 重跑

阶段六:收尾(Edit + Write)

并行执行 →
  ├── Edit redis_apis_summary.md          ← Skill第9步:标记[已测试]
  ├── 如有新坑 → Edit lessons_learned.md  ← Skill第10步:记录新教训
  └── 向用户输出:
       ├── 验证了什么功能点               ← Memory要求
       ├── 关键断言是什么                 ← Memory要求
       └── 未覆盖项有哪些                 ← Memory要求

完整时序图

时间轴 ──────────────────────────────────────────────────────────────────────►

[系统注入]          [显式 tool calls]
 CLAUDE.md    ─┐
 MEMORY.md索引 ─┤  ① Skill ─→ ② Read(多文件并行) ─→ ③ Write/Edit ─→ ④ Bash(pytest) ─→ ⑤ Edit(收尾)
 git status   ─┤
 skill触发规则 ─┘
               ▲                                                                           │
               │                                                                           ▼
           被动加载                                                                输出结果+更新memory
          (无tool call)                                                           (按memory要求格式)

各信息源的作用分工

信息源提供什么加载方式
CLAUDE.md项目架构、命令、编码规范系统自动注入
MEMORY.md历史教训、输出格式要求索引自动注入,详情按需 Read
Skill完整编写流程、模板、分类表、质量规则显式 tool call
lessons_learned.md具体踩坑案例和解决方案Skill 要求必须 Read
redis_apis_summary.mdAPI 测试覆盖状态Skill 要求 Read
已有代码现有模式、可复用方法按需 Read/Grep

关键结论

Memory 索引最先(被动注入)→ Skill 内容其次(主动调用)→ Memory 详细文件按需读取(Read 工具)

  • Memory 和 Skill 不是二选一,而是互补关系
  • Skill 提供"怎么写"(流程、模板、规范)
  • Memory 提供"别踩什么坑"(历史教训、输出要求)
  • CLAUDE.md 提供"项目是什么"(架构、命令、约定)