AI接口自动化测试的学习

**摘要:**本文详细记录了使用 AI 辅助完成一个博客系统接口自动化测试项目的全过程。从准备工作(准备接口文档和测试用例模板)开始,到利用 AI 生成项目架构、分阶段编写公共层、配置与测试数据、接口封装层、测试用例层,再到执行入口与全链路验证,最后介绍了如何通过 Postman MCP Server 实现 AI 驱动的接口测试。文章重点展示了如何通过提示词工程引导 AI 完成各阶段编码任务,并分享了在开发过程中遇到的接口文档不一致、断言多样性、Allure 报告叠加等典型问题的排查与解决思路,为读者提供了 AI 辅助接口自动化测试的完整实践参考。

这里是基于我虚拟机上部署的一个项目叫做博客系统来进行接口自动化的实现的

一.准备工作:

首先我们想要实现AI接口自动化测试,我们首先想到的是进行接口测试首先想到的就是接口测试的

测试代码的编写

首先我这里提前准备好了两个文件,一个是博客系统接口测试用例模板,用来规范AI生成的测试

用例,还有个是博客系统接口文档,这样AI就知道你的接口内容,会基于你的接口内容来进行生成

接口自动化测试的代码

这个接口文档就是提前用postman去发送请求,然后进行撰写的

现在我们让AI根据这两个文档来生成对应的测试用例,提示词:

这里我们用的是trae,因为不是什么大项目直接就是用国内免费的工具了,trae好的模型要排队,

所以这里直接用Claude code来完成任务了,等到后面进行postman来进行mcp操作时再来利用

trae的免费模型,这样应该可以完成任务

这里完成的还是很快的,非常不错,这里因为.md文件不好看 在编译器里面,我们这里下载一个

可以很好看到.md文件的一个软件,但是他有15天的免费试用,够我们使用了

下载地址:Typora------简单却强大的Markdown阅读器。

下载这个的时候记得挂梯子,这样才能进行下载

下载完成后,这样我们看到的文件就是有序的,表格也是可视化的,可以用来检查AI哪些可能的接

口写错了,我对比了下postman 他确实有几点写错了,提示词如下:

有几个问题需要修改: 1.博客列表页,获取成功的话是这样的格式: 成功示例,返回值: json { "code": "SUCCESS", "errMsg": "", "data": { "id": 133808, "title": "jmeter测试标题", "content": "jmeter测试内容", "userId": 1, "deleteFlag": 0, "createTime": "2025-08-04 22:57", "updateTime": "2025-08-04 22:57", "loginUser": false }, { "id": 133815, "title": "jmeter????002", "content": "jmeter????002", "userId": 1, "deleteFlag": 0, "createTime": "2025-08-05 11:48", "updateTime": "2025-08-04 22:57", "loginUser": false } } 2.在博客增加页修改下请求体信息: 请求体 json { "content": "博客标题", "title": "博客内容" } 3.获取博客详情的接口正确返回值写错了,修改一下: 成功示例,返回值: { "code": "SUCCESS", "errMsg": "", "data": { "id": 133814, "title": "jmeter????002", "content": "jmeter????002", "userId": 1, "deleteFlag": 0, "createTime": "2025-08-05 11:45", "updateTime": "2025-08-05103:45:27.000+00:00", "loginUser": true } }

二.生成项目架构:

我们这里提示词要注意一下接口依赖,因为我们后面所得到的比如说登录凭证都是从登陆时返回的

data数据得到的,所以我们测试别的接口的时候,要获得这个use_token_header

根据接口测试用例.md文件内容,直接输出接口自动化目录结构即可,不需要创建项目代码或文件

技术栈要求:

  1. 编程语言:Python

  2. 测试框架:pytest

  3. HTTP 库:requests

  4. 数据驱动:YAML

  5. 报告:Allure

  6. 接口返回值断言:jsonschema

  7. logging日志记录:日志分级输出,按天分割

其他设计要求:

  1. 其他接口需要在请求头添加有效token,但是token值来自于登录接口的返回值data

  2. 其他接口中有效的blogId取自列表页接口getList的有效返回值id

这是他生成的第一版的,有几点不符合我的要求还要进行修改

先让他进行修改,我再看看

他现在之前所写 我就觉得像一个要求文件,而不是项目架构,还不如直接写出要求.md了,这样

还能将每个步骤划分一下,这样AI可以更好的根据阶段性任务完成开发

这是我提交到远程仓库的最终版本的要求.md:

要求.md · zy/AI接口自动化测试 - 码云 - 开源中国

1.阶段1:

这样接下来我们先让AI来实现阶段一的任务:

2.阶段2:

这里已经写好了依赖库有,我们可以让他提升下版本,并推送到远端仓库

3.阶段3:

4.阶段4:

fixture的补充:

阶段1 的验收:

三.公共层的编写:

1.阶段1 日志库的编写:

并编写gitignore,来忽略一些日志文件和中间文件

2.阶段2

3.阶段3:

这里在阶段三完成后调试的时候,发现接口一直报错,我以为是网页崩溃了,没想到是跟我给

的接口文档有点不符合,这里让他重新看看接口,然后修改了要求

接口测试的复习:

这里是直接通过json格式的请求体发送请求的,而不是参数,这里使用参数会报错

所以有什么我们的接口文档,编写过程中可能出错了,后面还得重新验证一下

4.阶段4:

5.阶段五:

这里直接让AI把阶段二剩下的全部实现了

四.配置 + 测试数据 + JSON Schema:

遇到接口测试文档与实际的不一致,导致要求.md也错误了,进行全面的修改

这里要注意的是这里涉及到了测试数据那么就要让AI严格按照之前设计的测试用例来完成测试数据

的编写,但是前面有一步,我们接口测试文档有误,接口返回的数据和响应的数据有点不一致

对其进行了修改,但是接口测试用例的一些接口数据还没有修改,这里我们修改一下,并且重新

参照:

1.阶段1 全局配置文件的编写:

2.阶段2 环境配置文件的编写:

3.阶段3:加载配置文件的编写:

4.编写 6 个 YAML 测试数据文件:

这里我就不进行验证了,因为之前已经让AI全面审查代码了和之前的接口与接口测试用例

应该没有错误

5.编写 6 个 JSON Schema 文件

6.完成剩下的任务并验收:

五.接口封装层(apis/):

1.编写 `apis/login_api.py`:

2.apis/blog_api.py:

3.apis/user_api.py:

六.测试用例层的编写:

1.编写 `testcases/test_login.py`(10 条用例):

解决每次执行pytest时,allure-reports会自动叠加的问题:

2.编写 `testcases/test_blog_list.py`(6 条用例)

遇到的问题还是接口返回的时候居然有多样性:

有个执行用例没通过貌似是断言不一致的原因

3.编写 `testcases/test_blog_add.py`(10 条用例):

遇到的问题仍然是接口文档与实际API返回的结果不同的问题:

完成对接口文档测试用例的整体性修复:

yaml文件的作用:

4.编写 `testcases/test_blog_detail.py`(9 条用例):

上面完成了修改现在,进行的就很顺利了,一次就通过没有报错

5.编写 `testcases/test_user_info.py`(6 条用例)

6.编写 `testcases/test_author_info.py`(9 条用例)

七.执行入口 + 全链路验证:

1.run_tests.py的编写(值得称赞的点):

这个模块是可以运行以上单独的模块,如果想单独运行一个模块的话可以使用这里提供的命令

并且还可以按照优先级来运行,就是根据测试用例的优先级

来使用一下,看到这里还是非常可以的

列举了一下常用的命令:

2.全链路验证

生成allure报告的命令:

遇到的问题:

allure报告打开是这样的,有问题修复下

现在是这个命令直接一步到位,完成了对运行加生成测试报告:

八.Postman-mcp-server:

1.什么是mcp:

MCP,即模型上下文协议Model Context Protocol (MCP),是当前AI领域的热门概念。MCP 是一

种开放标准和协议,旨在规范人工智能模型(如 ChatGPT) 与外部数据源、工具和系统之间的通

信方式。简单来说,可以把 MCP 理解成 "大模型和外部世界交流的翻译官"。大模型(像 GPT 这

种)本身只会根据输入文字来回答问题。但是如果我们希望模型能去"干活",比如:

• 查数据库

• 打开一个网站

• 运行一个自动化脚本

• 调用 API 获取实时数据

等等,就需要一种统一的"沟通协议",让模型能知道:哪些功能能用、怎么调用、结果怎么传回

来,这个协议就是 MCP。

那么有没有可以操控postman来干活的协议?

有的那就是postman-mcp-server:delano/postman-mcp-server: An MCP server that provides access to Postman.

Postman MCP Server 是一个MCP 服务器,它与 Postman API 集成,提供对 Postman 集合

(collections)、环境(environments) 和 API 的全面管理。

2.使用前的环境搭建:

首先你的电脑中要有这两个东西,这个是用来安装mcp的,安装完这两个还要去安装pnpm,

有了npm下载pnpm就是一个命令的事,这两个都是包管理工具,可以问AI两者的区别

安装命令,通过npm安装:

npm install -g pnpm

-g命令代表全局安装

这样就显示安装完成了,接下来去下载postman-mcp-server的源码:

git clone https://github.com/delano/postman-mcp-server.git

cd postman-mcp-server

安装依赖:

pnpm install

构建服务器:

pnpm run build

我们现在还要在postman中设置APIKey:

注意:这里postman的APIkey只有第一次你能看到,后面直接是密文了,所以要妥善保管

接下来我们要配置mcp了:

这里就是我们需要添加配置的东西,添加mcp的话,这里我直接让AI帮我配置好了

然后并告诉他这个mcp server只能在当前项目下使用

其中进行的过程有些不顺利,有BUG,所以这里他给出了解决方案:

3.使用AI进行postman的操作:

这里就要依靠接口间的依赖

这里想要运行整个集合而不是单个的接口就要进行接口的依赖和配置

这里就简单介绍下,后面我还会补充一个mcp接口自动化的实战

相关推荐
猪头少年不会遇见算法学姐2 小时前
Makefile快速上手笔记
linux·学习
崖边看雾3 小时前
记录Python学习——第一章环境安装下载(Windows)
windows·python·学习·pycharm
dankokoko3 小时前
7.13-7.14学习
学习
一楼的猫4 小时前
网文AI辅助怎么过审?番茄200+维度检测与去AI味实战
人工智能·学习·机器学习·自然语言处理·ai写作
渣渣灰飞5 小时前
MySQL 系统学习 第五阶段:企业级 MySQL 实战开发 第一章:企业数据库设计规范
数据库·学习·mysql
吃着火锅x唱着歌5 小时前
Effective C++ 学习笔记 条款33 避免遮掩继承来的名称
c++·笔记·学习
你想知道什么?6 小时前
Matplotlib学习笔记
笔记·学习·matplotlib
m0_626535206 小时前
qwen2.5vl学习
学习
铅笔侠_小龙虾7 小时前
Rust 学习(8)-切片类型
学习·rust·c#
自信不摆烂美女7 小时前
从0开始学习3个月进入网络安全行业
学习