news 2026/5/9 23:54:24

手把手教你用AI打造一个「接口测试用例自动生成助手」(附完整代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用AI打造一个「接口测试用例自动生成助手」(附完整代码)

📝面试求职:「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


做接口自动化的同学,每天最耗时的工作是什么?写测试用例。

尤其是当你面对一份几十个接口的文档时,每个接口都要写请求、构造数据、写断言… 重复劳动不说,还容易遗漏边界场景。

如果能让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 pytest import requests def test_login_success(): url = "http://example.com/api/login" payload = {"username": "testuser", "password": "12345678"} resp = requests.post(url, json=payload) assert resp.status_code == 200 assert "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 pytest

2. 获取API Key

访问 OpenAI Platform,注册并创建Key

或使用国内模型:百度千帆、阿里百炼、智谱AI(文末有替换方法)

四、完整代码(可直接运行)​​​​​​​

import os import re from openai import OpenAI # ========== 配置区 ========== # 请替换成你自己的 API Key API_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 subprocess result = 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自动修复接口测试报错》,让你的用例不仅能生成,还能自愈。‍

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 23:53:25

灵魂量化分析工具soulspec:自定义维度追踪内在状态

1. 项目概述:一个灵魂的量化分析工具 最近在折腾一些个人知识管理和自我认知的项目,偶然间在GitHub上发现了 clawsouls/soulspec 这个仓库。单看名字就很有意思,“Claw Souls”和“Soul Spec”,直译过来是“爪魂”和“灵魂规格…

作者头像 李华
网站建设 2026/5/9 23:50:55

从账号共享到API代理:构建可持续AI服务的技术架构与实战

1. 项目概述与核心思路最近在折腾AI工具的时候,发现了一个挺有意思的现象:很多开发者或者小团队,都在尝试用各种方式降低使用高级AI服务的门槛。我自己也经历过这个阶段,看着ChatGPT Plus、Midjourney这些好用的工具,但…

作者头像 李华
网站建设 2026/5/9 23:47:20

Windows PDF处理终极指南:Poppler预编译包5分钟快速上手

Windows PDF处理终极指南:Poppler预编译包5分钟快速上手 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上的PDF处理…

作者头像 李华
网站建设 2026/5/9 23:39:32

CANN/opbase DFX诊断接口文档

op_dfx 【免费下载链接】opbase 本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。 项目地址: https://gitcode.com/cann/opbase 本章接口为预留接口,后续有可能变更或废弃,不建议开发者使用,开发者…

作者头像 李华
网站建设 2026/5/9 23:38:38

CANN/atvoss参数构建器属性方法

ArgumentsBuilder::attr 【免费下载链接】atvoss ATVOSS(Ascend C Templates for Vector Operator Subroutines)是一套基于Ascend C开发的Vector算子库,致力于为昇腾硬件上的Vector类融合算子提供极简、高效、高性能、高拓展的编程方式。 项…

作者头像 李华