
做接口自动化的同学,每天最耗时的工作是什么?写测试用例。
尤其是当你面对一份几十个接口的文档时,每个接口都要写请求、构造数据、写断言… 重复劳动不说,还容易遗漏边界场景。
如果能让AI帮你读接口文档,直接生成pytest测试代码,你只需要复核一下,那该多好?
今天我就用30行Python代码,调用大模型API,实现这样一个「AI测试用例生成助手」。代码可以直接复制运行(只需替换你的API Key)。

一、先看效果
输入一段接口描述(OpenAPI格式或自然语言):
{"path": "/api/login","method": "POST","parameters": {"username": "string, 必填","password": "string, 必填, 长度6-20"},"response": {"200": {"token": "string"}}}
AI自动生成的测试代码(pytest):
import pytestimport requestsdef test_login_success():url = "http://example.com/api/login"payload = {"username": "testuser", "password": "12345678"}resp = requests.post(url, json=payload)assert resp.status_code == 200assert "token" in resp.json()def test_login_missing_password():url = "http://example.com/api/login"payload = {"username": "testuser"}resp = requests.post(url, json=payload)assert resp.status_code == 400
整个过程不到3秒,再也不用手敲了。

二、核心原理
说白了就三步:
把接口定义(Swagger/JSON/自然语言)塞进Prompt
让大模型输出pytest格式的测试代码
保存成.py文件,直接运行
我们用的是OpenAI API(你也可以换成国产的通义千问、智谱GLM等,调用方式几乎一样)。

三、环境准备(只需两步)
1. 安装依赖
pip install openai requests pytest2. 获取API Key
访问 OpenAI Platform,注册并创建Key
或使用国内模型:百度千帆、阿里百炼、智谱AI(文末有替换方法)

四、完整代码(可直接运行)
import osimport refrom openai import OpenAI# ========== 配置区 ==========# 请替换成你自己的 API KeyAPI_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxx"BASE_URL = "https://api.openai.com/v1" # 国内用户需使用代理或替换成国内模型地址MODEL = "gpt-3.5-turbo" # 或 gpt-4# ==========================client = OpenAI(api_key=API_KEY, base_url=BASE_URL)def generate_test_cases(api_description: str) -> str:"""调用大模型,根据接口描述生成 pytest 测试用例代码:param api_description: 接口描述文本 (支持 JSON / 自然语言):return: 生成的 Python 代码字符串"""prompt = f"""你是一个资深的接口自动化测试工程师。请根据以下接口描述,生成完整的 pytest 测试用例代码。要求:- 使用 requests 库发送请求- 包含至少3个测试用例:正常场景、异常场景、边界场景- 每个测试用例要有明确的断言(状态码、返回字段)- 代码要可以直接复制运行接口描述如下:{api_description}只输出 Python 代码,不要多余的解释。"""try:response = client.chat.completions.create(model=MODEL,messages=[{"role": "system", "content": "你是专业的测试开发工程师,只输出可执行的Python代码。"},{"role": "user", "content": prompt}],temperature=0.3, # 降低随机性,保证输出稳定)code = response.choices[0].message.content# 去掉 markdown 代码块标记(如果模型加了)code = re.sub(r'```python\n?|```\n?', '', code)return code.strip()except Exception as e:print(f"调用AI生成失败: {e}")return ""def save_test_file(code: str, filename: str = "test_generated.py"):"""保存生成的代码到文件"""with open(filename, "w", encoding="utf-8") as f:f.write(code)print(f"✅ 测试用例已保存到 {filename}")if __name__ == "__main__":# 示例接口描述(你可以替换成自己的接口文档)api_desc = """接口路径: POST /api/user/register请求体 (JSON):{"username": "字符串,必填,3-20位","email": "邮箱格式,必填","password": "字符串,必填,6-20位"}响应:成功 200: {"code":0, "message": "success", "user_id": 123}失败 400: {"code": 1001, "message": "用户名已存在"}失败 422: {"code": 1002, "message": "参数校验失败"}"""print("🚀 正在生成测试用例,请稍候...")test_code = generate_test_cases(api_desc)if test_code:save_test_file(test_code)print("\n生成的代码如下:\n")print(test_code)# 可选:立即运行生成的测试(需确保依赖已安装)run = input("\n是否立即执行生成的测试?(y/n): ").strip().lower()if run == 'y':os.system("pytest test_generated.py -v")else:print("❌ 生成失败,请检查网络或API Key")

五、如何把这段代码用到你的实际工作中?
1. 对接Swagger/OpenAPI
如果你们的接口文档是Swagger JSON,稍加改造就能自动读取:
import json, requests# 拉取Swagger文档swagger_url = "http://your-api.com/v2/api-docs"doc = requests.get(swagger_url).json()# 提取每个接口的path、method、参数for path, methods in doc['paths'].items():for method, detail in methods.items():description = f"{method.upper()}{path}\n参数:{detail.get('parameters', [])}\n响应:{detail.get('responses', {})}"test_code = generate_test_cases(description)save_test_file(test_code, f"test_{path.replace('/', '_')}.py")
2. 增加断言自定义
你可以在Prompt中告诉AI公司内部的校验规则,比如:
“断言时统一检查返回码是否为0,如果不是0则打印message”
AI会自动把规则写进代码。
3. 连续生成+批量运行
写出一个脚本,一口气把几十个接口的测试用例全生成,然后pytest批量执行。

六、常见问题与解决方案
Q1:我没有OpenAI API Key怎么办?
用国产模型替换,只需改BASE_URL和MODEL。以智谱AI为例:API_KEY = "你的智谱API Key"BASE_URL = "https://open.bigmodel.cn/api/paas/v4/"MODEL = "glm-4-flash"其他模型(通义千问、文心一言)同理,参照官方文档改endpoint。
Q2:生成的代码有语法错误或跑不通?
可以增加一个简单的语法校验,或者把错误信息喂回给AI让它修正:
import subprocessresult = subprocess.run(["python", "-m", "py_compile", "test_generated.py"], capture_output=True)if result.returncode != 0:# 把错误信息重新发给AI修正fix_prompt = f"代码有语法错误,请修正:\n{result.stderr.decode()}"
Q3:生成的测试用例不够全面?
优化你的Prompt,增加细节,例如:“请覆盖边界值:username长度为3和20,密码包含特殊字符”。
七、进阶方向(让助手更智能)
支持多轮对话:生成后不满意,可以继续让AI修改
自动执行并分析失败:AI根据报错信息自动修复断言
集成到CI:接口文档有变更,自动触发重新生成用例
这些都超出了纯自动化的范畴,但你现在的代码已经打下了基础——你已经开始用AI改造自己的工作流了。

写在最后
测试开发人员的核心竞争力,从来不是熟练度,而是搭建高效工具的能力。
这个AI助手花半小时就能跑起来,但它每天能帮你节省1小时的手工编写时间。更重要的是,它展示了一种思路:凡是重复的脑力劳动,都可以交给AI。
如果你成功跑起来了,欢迎在评论区晒出你生成的第一个测试用例。
下一期我将分享《AI自动修复接口测试报错》,让你的用例不仅能生成,还能自愈。

商务合作:RYXtest
夜雨聆风