api-test-suite-builderlisted
Install: claude install-skill findscripter/everything-skills
## 何时使用
适用:
- 新增 API:实现前先生成测试脚手架,走 TDD。
- 遗留无测试的 API:扫描路由,补齐基线覆盖。
- 契约评审:核对现有测试是否与当前路由定义一致。
- 发版前回归:确保每条���由至少有冒烟测试。
- 安全审计准备:生成对抗性入参(注入、越权、超限)测试。
支持的框架:Next.js App Router、Express、FastAPI、Django REST Framework。
产物形态:Node 端 Vitest + Supertest;Python 端 Pytest + httpx。
不该用(负边界):
- 纯前端 UI / 组件渲染测试(用 E2E 或组件测试工具)。
- 函数级单元测试(本技能聚焦端到端的接口行为)。
- 非 REST 协议:GraphQL、gRPC、WebSocket 不在覆盖范围。
- 性能/压测(限流测试只验证 429 行为,不做吞吐基准)。
## 步骤
1. 扫描路由:用下方命令枚举全部端点及其 HTTP 方法,形成路由清单。
2. 阅读每个 handler,明确:请求体 schema、鉴权要求(中间件/装饰器)、返回类型与状态码、业务规则(归属权、角色校验)。
3. 按路由分组生成测试文件,套用「鉴权矩阵」「入参校验矩阵」。
4. 测试命名描述化:`returns 401 when token is expired`,而非 `auth test 3`。
5. 测试数据一律用工厂/fixture,绝不硬编码 ID。
6. 断言响应结构(字段、形状),而不仅是状态码;并断言敏感字段(password、secret)不出现在响应中。
## 指令
路由探测(按框架选用):
Next.js App Router:
```bash
find ./app/api -name "route.ts" | while read f; do
route=$(echo $f | sed 's|./app||' | sed 's|/route.ts||')
methods=$(grep -oE "export (async )?function (GET|POST|PUT|PATCH|DELETE)" "$f" | \
grep -oE "(GET|POST|PUT|PATCH|DELETE)")
echo "$methods $route"
done
```
Express:
```bash
grep -rn "router\.\|app\." src/ --include="*.ts" | \
grep -oE "\.(get|post|put|delete|patch)\(['\"][^'\"]+['\"]" | \
sed "s/\.\(.*\)('\(.*\)'/\U\1 \2/"
```
FastAPI:
```bash
grep -rn "@\(app\|router\)\.\(get\|post\|put\|delete\|patch\)" . --include="*.py" | \
grep -oE "@(app|router)\.(get|post|put|delete|patch)\(['\"][^'\"]*['\"]"
```
Django REST:
```bash
grep -rn "path\|re_path\|url(" . --include="*.py" | grep "urlpatterns"