Agent Skills 实战:手把手做一个接口测试技能包

简介: 本文手把手教你将接口测试经验封装为Claude Code可复用的Skill技能包:通过规范目录结构、精准description触发、前置门禁流程、渐进式文档引用与脚本集成,让AI稳定生成覆盖异常场景、含多层断言的高质量pytest用例,告别重复Prompt与“假通过”测试。

上个月,团队里一个测试同学来找我,表情有点无奈。

“哥,我用 Claude Code 生成接口测试用例,写了三天 Prompt,生成的脚本还是只能跑正常流程。让它测密码错误,它只断言 HTTP 200,根本没查数据库里的登录状态。”

我问他:“你把测试规则写在哪了?”

他说:“写在对话里啊。每次都要重新说一遍‘先调登录接口拿 token,再调业务接口,断言 code=0,data 不能为空’……”

我说:“那你为什么不用 Skill 把规则固化下来?”

他愣了一下:“接口测试也能做成 Skill?”

能。而且比你想的简单得多。 这篇文章,我把从零构建一个“接口测试技能包”的完整过程拆开讲。看完你就能自己做一个。

一、为什么接口测试需要 Skill?

先说说接口测试的真实痛点。

传统接口测试的“脚本地狱”是这样的:写了几十个用例,每个用例里都嵌着一堆硬编码断言——assert resp.status_code == 200、assert resp.json()["code"] == 0、assert resp.json()["data"]["token"] != ""。

上游字段一改,几十个用例里的断言要一个个重写。AI 来帮你生成?它复制粘贴的速度更快,但产出的东西依然是硬编码断言,该脆弱的还是脆弱。

更隐蔽的问题是“假通过”。 让 AI 生成一个支付回调的测试脚本,Prompt 里写了“校验订单状态变更为已支付”,结果它只断言了 HTTP 200,没有去查数据库里的订单状态。这个用例表面通过了,实际上什么都没验证。

Prompt 能表达“做什么”,但很难稳定地表达“怎么做才算对”。 它可以描述流程,但流程的每个节点需要哪些前置条件、执行时允许调用哪些工具、失败后应该如何回滚——这些确定性的工程细节,靠自然语言描述,总会有遗漏。

Skill 解决的就是这个问题:把“怎么做一个任务”从一次性的对话,变成可复用、可版本控制、可被 Agent 自动调度的能力单元。

二、Skill 和 MCP 的区别:一个给“手”,一个给“菜谱”

聊 Skill 的时候,很多人会问:那 MCP 呢?

这两个东西经常被放在一起比较,但它们解决的问题完全不同。MCP 是连接层,让 Agent 能连上外部工具——数据库、Git 仓库、接口文档、测试平台。它回答的是“能不能做”。Skill 是流程层,告诉 Agent 怎么组合这些工具、按什么顺序、遇到什么情况该怎么处理。它回答的是“怎么做才对”。

打个比方。MCP 是厨房里的刀具和炉灶,Skill 是菜谱。你给一个新手全套厨具,他可能切到手。给他一份菜谱,他至少能做出能吃的菜。

三、手把手:从零搭一个接口测试技能包

第一步:搭目录结构(2分钟)

Skill 必须放在 Agent 能识别的位置。项目级 Skill 放在项目的 .claude/skills/ 目录下。

.claude/skills/api-test-skill/
├── SKILL.md              ← 核心指令(必需)
├── references/            ← 参考文档(可选)
│   ├── http-codes.md
│   └── auth-methods.md
└── scripts/               ← 可执行脚本(可选)
    ├── run-tests.py
    └── validate-schema.py

关键规则:SKILL.md 文件名必须全大写。文件夹命名必须用 kebab-case,比如 api-test-skill,不能写成 API Test Skill。

第二步:写 SKILL.md 的头信息(5分钟)

头信息决定了 Agent 什么时候触发这个 Skill。最重要的字段是 description。

---
name: api-test-skill
description: 面向Python+pytest+requests的接口自动化测试技能。当用户需要新增接口自动化用例、维护已有用例、调试接口测试失败、或提到"接口测试""API测试""pytest用例"时触发。
when_to_use: 用户需要为REST API生成或维护自动化测试用例时使用。适用于新增用例、修复失败用例、接口回归测试等场景。
allowed-tools: Read, Write, Edit, Bash
---

description 是 Skill 的“门牌号”。 Claude 会把所有 Skill 的 description 预加载进上下文,用来判断该不该触发这个 Skill。你写“帮助接口测试”,它永远不知道什么时候该用。你写清楚“新增接口自动化用例、维护已有用例、调试接口测试失败时触发”,它就知道。

第三步:写 SKILL.md 的正文(30分钟)

正文就是操作手册。核心原则是:不要把测试逻辑写死在 Skill 里,而是让 Skill 告诉 Agent“去哪里找规则、按什么流程执行”。

这是我们从社区一个开源接口测试 Skill 里学到的设计思路——它用前置门禁约束修改边界,用渐进式披露降低上下文噪音。

## 任务
为 REST API 生成或维护 pytest + requests 接口自动化测试用例。

## 执行流程

### 步骤1:确认任务信息(前置门禁)
在执行任何操作前,必须向用户确认以下信息:
- 接口方法文件路径:待测接口定义在哪个文件?
- 接口方法位置:具体函数名或类名是什么?
- 用例文件路径:新用例写在哪个文件?
- 用例文件位置:具体写在哪个测试类或函数中?
- 用例命名:新用例叫什么名字?

**如果任何一项缺失,停止执行,向用户提问。**

### 步骤2:选择用例生成路径
根据用户提供的输入,选择对应的路径:

**路径A(有接口文档)** :读取 OpenAPI/Swagger 文档,提取请求方法、路径、参数、响应结构。
**路径B(有参考用例)** :找到1-2个功能最相近的已有测试用例文件,阅读其基类、导入、写法、命名风格。新用例的风格必须与已有用例保持一致。
**路径C(有cURL/抓包)** :解析 cURL 命令或抓包数据,提取请求方法、URL、Headers、Body。
**路径D(有pytest报错)** :读取报错信息,定位失败原因,修复用例。

### 步骤3:生成测试用例
每条用例必须包含:
- 用例ID:{模块}-{场景}-{序号}
- 前置条件:执行前必须满足的条件
- 请求配置:method, url, headers, body
- 断言:
  - 状态码断言(必须)
  - 业务码断言(必须)
  - 关键字段存在性断言(必须)
  - 字段类型/范围断言(按需)

### 步骤4:pytest闭环验证
用例编写完成后,必须执行目标 pytest 用例。
- 如果通过:输出用例摘要。
- 如果失败:读取报错,修复用例,重新执行,直到通过或明确说明环境问题。

### 步骤5:输出结果
- 新增/修改的用例列表
- pytest 执行结果
- 如果失败,附上失败原因和修复过程

这个流程的核心设计是“前置门禁”。 步骤1强制要求 Agent 确认文件路径和用例位置,避免它不知道写在哪里而大范围改动已有文件。

第四步:用 references 放长文档(10分钟)

references/ 目录放按需加载的长文档。SKILL.md 里只引用文件名,Agent 只在需要时才去读。这样不会把上下文撑爆。

references/test-case-template.md:详细的用例模板和示例。

references/http-codes.md:HTTP 状态码的含义和常见错误场景。

在 SKILL.md 里这样引用:

## 参考资料
- 用例模板和示例,参考 `references/test-case-template.md`
- HTTP 状态码说明,参考 `references/http-codes.md`

第五步:用 scripts 放可执行代码(15分钟)

scripts/ 目录放可执行的代码。Agent 不看代码内容,只看执行结果。

scripts/validate-schema.py:校验响应结构是否匹配 JSON Schema。

#!/usr/bin/env python3
"""校验 API 响应是否符合 JSON Schema"""
import sys
import json
import jsonschema

def validate_response(response_file, schema_file):
    with open(response_file) as f:
        response = json.load(f)
    with open(schema_file) as f:
        schema = json.load(f)
    try:
        jsonschema.validate(response, schema)
        print("PASS: 响应结构符合Schema")
        return 0
    except jsonschema.ValidationError as e:
        print(f"FAIL: {e.message}")
        return 1

if __name__ == "__main__":
    sys.exit(validate_response(sys.argv[1], sys.argv[2]))

在 SKILL.md 里引用:

## 步骤6:Schema校验(可选)
如果提供了 JSON Schema,运行 `python scripts/validate-schema.py response.json schema.json` 校验响应结构。

四、怎么用?三个字:直接调

Skill 写好了,在 Claude Code 里输入:

/api-test-skill 我要为 /api/v1/login 新增接口自动化测试用例

Agent 会自动加载 Skill 的规则,按你定义的流程执行:

  1. 先问你接口方法文件、用例文件路径、用例名
  2. 读取接口定义,提取请求方法和参数
  3. 生成 pytest 用例,包含状态码、业务码、字段存在性断言
  4. 执行 pytest,根据报错修复,直到通过

我让那个测试同学试了一下。他输入“新增登录接口的测试用例”,Agent 先问他:“接口方法定义在哪个文件?用例写在哪个文件?用例叫什么名字?”

他填完之后,Agent 在 2 分钟内生成了 8 条用例——正常登录、密码错误、账号不存在、验证码过期、字段缺失、SQL注入、超长字符串、空密码。执行 pytest,8 条全过。

他说:“以前这种程度的用例,我要写一个下午。”

五、进阶:用 Skill 做“模块化校验”

接口测试真正难的不是“写断言”,是“断言写得对且不脆弱”。

社区有一种更进一步的思路:把校验逻辑从一次性脚本中解耦出来,变成可组合、可复用的独立单元。比如:HttpStatusCodeSkill 校验响应状态码,JsonPathExistsSkill 校验 JSON 路径是否存在且非空,JsonSchemaSkill 校验响应结构,BusinessRuleSkill 校验自定义业务规则(如金额计算)。

每个 Skill 都有标准接口:接收一段校验描述,输出一个可执行的校验函数。而 Agent 的工作流,是把接口文档、测试场景和已有的 Skills 清单一起丢给大模型,让它自动规划“用哪些 Skill、按什么顺序、带什么参数”来完成这次校验。核心在于:Agent 不直接生成断言代码,而是生成一份校验计划。这个计划由 Skills 解释执行。

六、避坑指南

坑一:description 写得太空。 “帮助接口测试”——等于没写。要写清楚触发条件:用户说什么话、什么场景下用这个 Skill。

坑二:SKILL.md 写成百科全书。 超过 500 行就开始浪费 Token。把详细内容移到 references/ 目录,SKILL.md 只留核心流程。

坑三:把测试逻辑写死在 Skill 里。 不要在 SKILL.md 里写“断言 token 字段非空”,而是写“找到同目录已有用例,阅读其断言风格,新用例保持一致”。Skill 教的是方法论,不是具体断言。

坑四:忽略 Skill 的回归测试。 模型版本一变,Skill 行为可能漂移。阿里开源的 skill-up 就是干这个的——用声明式 YAML 写评测用例,跨引擎跑评测,发现退化及时修复。

坑五:不做前置门禁。 让 Agent 自己决定用例写在哪里,它可能会大范围改动已有文件。必须强制它先确认文件路径和用例位置。

最后

接口测试的 Skill 化,本质是把“测试工程师的经验”变成“Agent 能执行的流程”。

以前你把测试规则写在对话里,每次都要重新说一遍。现在你把规则写进 SKILL.md,Agent 每次都会按同一套标准执行。

以前 AI 生成的用例只能跑正常流程,因为它不知道“异常场景也要覆盖”。现在 Skill 里写清楚了四条路径、五步流程、六类断言,Agent 知道该怎么做。

你不需要再手写第 N 版 Prompt 了。你只需要把经验封装成一个技能包,让 Agent 照着干。

下次你发现自己在反复描述同一套接口测试规则的时候,停下来,花 30 分钟把它封装成 Skill。

30 分钟的投入,换的是未来每一个接口的测试效率。

相关文章
|
19天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
8793 25
|
18天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
3407 15
|
17天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2199 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
12天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
18天前
|
云安全 人工智能 安全
|
4天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
371 1
|
6天前
|
人工智能 Linux Windows
千问办公(QwenWork)官网入口:其实有2个,一个是网页端千问办公,一个是介绍指南页面
千问办公(QwenWork)是阿里云推出的AI智能办公平台,支持网页端直接使用及Windows/Mac/Linux客户端下载。提供PPT生成、财报分析、网页搭建等AI功能,个人版免费,企业版198元/席/月。详情见官网qwenwork.cn或阿里云产品页。
825 0
千问办公(QwenWork)官网入口:其实有2个,一个是网页端千问办公,一个是介绍指南页面

热门文章

最新文章