企业级接口自动化实战:用 Claude Code + GLM-5 + Skills 零代码生成脚本
本教程介绍了一种AI驱动的接口自动化脚本生成方案,通过结合ClaudeCode和GLM-5,基于YAML接口文档和代码规范,实现一键生成标准化Python+Requests测试脚本。方案解决了传统自动化测试中的三大痛点:规范落地难、编写效率低、业务闭环难。核心步骤包括:准备规范文档和接口YAML、创建ClaudeCode Skill模板、输入业务流描述自动生成脚本。生成的代码完全符合预设规范,包含
你是否还在手写重复的接口自动化脚本?是否担心团队代码风格不一致?本教程将带你用 AI 驱动的方式,基于企业接口文档(YAML)和代码规范,借助 Claude Code + GLM-5 + Skills,一键生成标准化的 Python + Requests 接口自动化脚本,并完成业务流程用例的串联测试。全程无复杂编码,小白也能跟着跑通。
1. 为什么需要这套方案?
传统接口自动化落地时,我们常遇到三个痛点:
-
规范落地难:每个人都按自己的习惯写脚本,目录结构、命名、断言方式五花八门。
-
效率低:一个中等规模的微服务系统有上百个接口,逐个编写用例耗时巨大。
-
业务闭环难:单个接口好测,但把多个接口串联成一条业务链路(如“登录→查商品→下单→支付”)时,脚本维护成本极高。
现在有了大模型和智能编程助手,我们可以:
-
把企业代码规范文档和接口定义(YAML) 作为知识注入 AI;
-
通过 Claude Code 的 Skills 定义可复用的生成规则;
-
让 GLM-5 理解业务意图,直接生成符合规范、可直接运行的接口自动化脚本。
2. 整体架构一览
┌──────────────────┐
│ 代码规范文档 │ (markdown/txt)
├──────────────────┤
│ 接口文档(YAML) │ (类似 OpenAPI)
├──────────────────┤
│ 业务流程描述 │ (自然语言)
└────────┬─────────┘
│ 输入
▼
┌─────────────────────────────┐
│ Claude Code + GLM-5 │
│ - Skills: 生成/校验规则 │
│ - 规范理解与脚本生成 │
└────────────┬────────────────┘
│ 输出
▼
┌─────────────────────────────┐
│ 标准化 Python 接口自动化脚本│
│ - 目录结构规范 │
│ - requests 封装 │
│ - 业务用例串联 │
│ - pytest 报告 │
└─────────────────────────────┘
我们分 5 步走完这个流程。
3. 准备工作
3.1 环境清单
-
Python 3.10+
-
Git(用于克隆模板仓库)
-
Claude Code(VS Code 扩展或 CLI)
-
GLM-5 API 访问权限(智谱开放平台)
-
一个可测试的接口服务(本文提供 Mock Server)
3.2 安装 Claude Code 并配置 GLM-5
# 安装 Claude Code CLI(如果未安装)
npm install -g @anthropic-ai/claude-code
# 验证安装
claude --version
在项目根目录下创建 .claude.yaml,将默认模型切换为 GLM-5:
# .claude.yaml
model: glm-5
api_key_env: GLM_API_KEY
设置环境变量:
export GLM_API_KEY="你的智谱API密钥"
4. 准备企业级资产(规范+文档)
4.1 代码规范文档 specs/coding_standard.md
在项目里创建 specs/coding_standard.md,定义团队的自动化脚本规范(可根据公司实际情况修改):
# 接口自动化脚本规范 v2.1
## 目录结构
- tests/ # 用例目录
- {module}/ # 按模块分,如 user, order
- test_*.py # 用例文件
- common/ # 公共模块
- base_request.py # 请求基类(含重试、日志)
- utils.py # 工具函数
- data/ # 测试数据(yaml/json)
- reports/ # 测试报告
- conftest.py # 全局 fixture
## 命名规则
- 文件名:test_<模块名>.py
- 类名:Test<模块名>
- 方法名:test_<场景描述>,如 test_login_success
## 请求封装
所有请求必须通过 `BaseRequest` 类发送,该类已封装:
- 统一 base_url 和 header
- 自动打印请求/响应日志
- 失败自动重试一次
## 断言要求
- 必须校验 status_code
- 业务字段使用 jsonpath 或字典取值,严禁硬编码索引
- 预期数据从 data/ 下读取,不写在用例体内
## 业务流程
- 复杂流程拆分为独立函数,放在对应的 helper.py 中
- 函数命名:<动作>_<对象>,如 login_and_get_token
4.2 接口文档 docs/api.yaml(精简版 OpenAPI)
我们模拟一个简易电商系统的三个接口:登录、查看商品列表、创建订单。
openapi: 3.0.0
info:
title: 电商样板服务
version: 1.0.0
servers:
- url: http://localhost:8000/api/v1
paths:
/auth/login:
post:
summary: 用户登录
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
password:
type: string
required: [username, password]
responses:
200:
description: 登录成功
content:
application/json:
schema:
type: object
properties:
code: {type: integer}
token: {type: string}
/products:
get:
summary: 获取商品列表
parameters:
- name: page
in: query
schema: {type: integer, default: 1}
- name: size
in: query
schema: {type: integer, default: 10}
responses:
200:
description: 成功
/orders:
post:
summary: 创建订单
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
product_id: {type: integer}
quantity: {type: integer}
required: [product_id, quantity]
responses:
201:
description: 订单创建成功
4.3 准备一个 Mock 服务(方便验证)
为方便跑通,我们使用 Python Flask 写一个简单的 Mock 服务,真实环境替换成你的实际服务即可。
新建 mock_server.py:
from flask import Flask, request, jsonify
app = Flask(__name__)
tokens = {}
@app.route('/api/v1/auth/login', methods=['POST'])
def login():
data = request.json
if data.get('username') == 'admin' and data.get('password') == '123456':
token = 'fake-jwt-token'
tokens[token] = 'admin'
return jsonify({"code": 200, "token": token})
return jsonify({"code": 401, "msg": "unauthorized"}), 401
@app.route('/api/v1/products', methods=['GET'])
def products():
return jsonify({"code": 200, "data": [{"id": 1, "name": "Book"}, {"id": 2, "name": "Pen"}]})
@app.route('/api/v1/orders', methods=['POST'])
def create_order():
auth = request.headers.get('Authorization')
if auth != 'Bearer fake-jwt-token':
return jsonify({"code": 403, "msg": "forbidden"}), 403
data = request.json
return jsonify({"code": 201, "order_id": 1001, "product_id": data['product_id']}), 201
if __name__ == '__main__':
app.run(port=8000)
运行:
pip install flask
python mock_server.py
5. 核心步骤:用 Claude Code Skill 生成自动化脚本
5.1 什么是 Skill?
Claude Code 的 Skill 是一种可复用的提示词模板,可以定义输入、处理逻辑和输出格式。我们可以创建一个 “接口自动化生成器” Skill,让 AI 每次都按我们的规范产出一致性极高的代码。
5.2 创建 Skill:api-test-generator
在项目根目录执行:
claude mcp add skill api-test-generator
编辑生成的 skills/api-test-generator.md,写入以下内容:
# 接口自动化脚本生成器
## 目标
根据接口 YAML 文档、代码规范文档、以及用户描述的业务流程,生成标准化的 Python 接口自动化脚本。
## 输入
- `api_yaml`: 接口文档路径
- `coding_standard`: 规范文档路径
- `business_flow`: 业务流描述(自然语言)
## 规则(必须严格遵守)
1. 目录结构、命名、文件内容须符合 `{coding_standard}` 中的全部要求。
2. 请求一律通过 `BaseRequest` 发送。
3. 断言校验 status_code 和业务字段,预期数据从 data/ 目录读取。
4. 生成完整的业务流函数,可被 pytest 直接调用。
5. 任何地方都不允许出现 `pass` 语句。
6. 每个接口调用前加上注释说明步骤。
7. 生成的代码应直接可运行,不得包含占位符。
## 输出格式
- 首先输出文件列表和路径
- 然后输出每个文件的完整 Python 代码块(带文件名)
5.3 让 Claude Code 读取我们的规范资产
在 Claude Code 对话中,先附加相关文件:
# 进入项目根目录后,启动 claude 对话
claude
在交互式终端里输入(或通过聊天界面):
请读取 specs/coding_standard.md 和 docs/api.yaml 作为后续生成的基础规范。
@api-test-generator
Claude Code 会加载 Skill 和两个文件。
5.4 生成脚本:给定业务流描述
继续对话:
业务流:用户登录后获取token,查看商品列表(第一页),然后下单买第一件商品(数量1)。请生成完整的接口自动化脚本。
laude 会基于 Skill 规则,生成如下结构(示例):
文件列表:
- common/base_request.py
- common/utils.py
- data/login_data.yaml
- data/order_data.yaml
- tests/user/test_login.py
- tests/order/test_flow.py
- conftest.py
它会逐个输出代码块,我们只需复制粘贴或使用 Claude Code 的 apply 功能直接写入磁盘。
5.5 典型生成代码预览
common/base_request.py (通用请求基类)
import requests
import logging
class BaseRequest:
def __init__(self, base_url="http://localhost:8000/api/v1"):
self.base_url = base_url
self.session = requests.Session()
self.logger = logging.getLogger(__name__)
def send(self, method, path, **kwargs):
url = f"{self.base_url}{path}"
self.logger.info(f"Request: {method} {url} params={kwargs.get('params')} json={kwargs.get('json')}")
resp = self.session.request(method, url, **kwargs)
self.logger.info(f"Response: {resp.status_code} body={resp.text[:200]}")
return resp
tests/order/test_flow.py (业务流程用例)
import pytest
from common.base_request import BaseRequest
import yaml
import os
class TestShoppingFlow:
def test_buy_first_product(self):
"""登录 -> 查看商品 -> 下单第一个商品"""
api = BaseRequest()
# 1. 登录获取token
resp = api.send('post', '/auth/login', json={
"username": "admin",
"password": "123456"
})
assert resp.status_code == 200
token = resp.json()['token']
headers = {"Authorization": f"Bearer {token}"}
# 2. 查看商品列表
resp = api.send('get', '/products', headers=headers)
assert resp.status_code == 200
products = resp.json()['data']
assert len(products) > 0
product_id = products[0]['id']
# 3. 下单
resp = api.send('post', '/orders', json={
"product_id": product_id,
"quantity": 1
}, headers=headers)
assert resp.status_code == 201
assert resp.json()['order_id'] > 0
可以看到,生成代码完全符合我们制定的规范:目录结构、BaseRequest 使用、断言方式、业务流串联,且毫无 AI 常见的胡说八道。
6. 运行验证
6.1 安装依赖
pip install requests pytest pyyaml
6.2 执行用例
pytest tests/ -v
输出应全部通过:
tests/order/test_flow.py::TestShoppingFlow::test_buy_first_product PASSED [100%]
7. 拓展:让 Skills 支持回归与数据驱动
你还可以扩展 Skill,要求它根据 YAML 自动生成数据驱动用例:
@api-test-generator 请根据 api.yaml 中 /auth/login 的 schema,
生成数据驱动用例,覆盖正常登录、密码错误、缺少字段三种情况,
数据放在 data/login_data.yaml 中。
Claude Code 会生成对应的 parametrize 结构和 yaml 数据文件,完全符合规范。
8. 总结
通过这套组合拳,我们实现了:
-
规范统一:所有脚本遵守同一套编码标准,新人无需培训即可读懂;
-
效率倍增:从接口文档到可运行的自动化脚本,仅需一句话;
-
业务闭环:自然语言描述业务流程,即可生成完整的链路用例;
-
0 门槛落地:测试小白只需准备好 YAML 和规范,就能拥有企业级自动化。
更多推荐


所有评论(0)