新闻详情

新闻详情

首页 / 资讯中心 / 详情

从 0 开始学习 AI 测试:用 Cursor Rules 文件让接口测试自动生成代码

发布时间:2026/9/26 3:37:24来源:尧图网络
从 0 开始学习 AI 测试:用 Cursor Rules 文件让接口测试自动生成代码
1. 接口测试自动生成代码卡在哪一步很多测试同学第一次用 Cursor 写接口自动化都会遇到同一个尴尬AI 生成的代码看起来像模像样跑起来却全是红的。路径对不上、字段名拼错、断言写了个根本不存在的data[orderId]。原因不复杂——大模型并不认识你的系统它只是根据通用经验“猜”了一个合理的接口出来。接口测试自动生成代码这件事真正难的不是让 AI 写 Python而是让它知道你的接口长什么样、你的工程怎么分层、你的命名规范是什么。这三件事分别对应三个动作喂接口知识、搭分层结构、写 Rules 文件约束。这篇面向零基础测试人员从接口测试场景出发把 Cursor Rules 文件配置到能直接生成可运行用例的完整流程走一遍。你会拿到一份可复制的 Rules 文件骨架、一段settings.json配置片段以及运行验证的具体命令。全程不需要你懂大模型原理只需要你会复制粘贴和跑 pytest。适合谁看刚接触自动化测试、团队接口文档不全、想让 AI 帮忙写用例但生成质量不稳定的测试同学。读完你能独立搭出一个 AI 愿意遵守规范的接口测试工程。2. 前置准备TaoToken 与 Cursor 的接入配置在写 Rules 之前得先让 Cursor 里的模型调用跑通。我这边习惯用 TaoToken 做模型接入层它提供 OpenAI 兼容的接口格式配置到 Cursor 里比较省事。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。2.1 拿到 API Key登录后进入控制台在 API Keys 页面创建一个新 Key。建议按项目命名比如cursor-api-test方便后面区分。创建后立刻复制保存页面刷新后就看不到完整 Key 了。2.2 在 Cursor 中配置模型打开 Cursor进入Settings→Models找到 OpenAI API Key 的配置项。这里有两种填法第一种是直接在 Cursor 的模型设置里覆盖 Base URL。打开settings.jsonmacOS 在~/Library/Application Support/Cursor/User/settings.jsonWindows 在%APPDATA%\Cursor\User\settings.json加入下面这段{ cursor.general.enableOpenAICompatibleApi: true, openai.baseUrl: https://taotoken.net/api, openai.apiKey: sk-你的TaoToken密钥, cursor.chat.defaultModel: gpt-4o, cursor.cpp.enablePartialAccepts: true }第二种是在 Cursor 的 Models 面板里手动添加自定义模型Base URL 填https://taotoken.net/apiKey 填刚才创建的。两种方式选一种即可不要同时配否则可能冲突。注意openai.baseUrl结尾不要带/v1TaoToken 的兼容层会自动处理路径。如果你填了/v1出现 404去掉再试。2.3 验证模型连通配置完重启 Cursor打开 Chat 面板输入一句“你好回复 ok 即可”。如果能正常返回说明接入成功。如果报 401检查 Key 是否复制完整如果报连接超时检查 Base URL 是否写错。这一步跑通后后面 Rules 文件才能真正生效——因为 Rules 是注入到每次对话里的系统提示词模型不通规则再全也没用。3. 可复制配置Rules 文件骨架与工程分层Rules 文件是 Cursor 的核心功能之一本质是附加在每次 AI 对话前的系统提示词。你写进去的规范会在 AI 生成代码前自动注入让它知道“这个项目该怎么写”。3.1 创建 Rules 文件推荐用命令面板创建。在 Cursor 里按CmdShiftPmacOS或CtrlShiftPWindows输入New Cursor Rule回车命名比如api-test-rulesCursor 会自动在.cursor/rules/下生成api-test-rules.mdc。也可以手动创建mkdir -p .cursor/rules touch .cursor/rules/api-test-rules.mdc3.2 Rules 文件骨架下面这份骨架可以直接复制按你的项目改模块名即可。开头是 YAML Front Matterglobs决定规则在操作哪些文件时触发--- description: 接口自动化工程编码规范 globs: - tests/**/*.py - api/**/*.py - services/**/*.py alwaysApply: false --- # 接口自动化工程编码规范 ## 工程结构 本工程采用三层架构 - api/接口调用层每个接口有且只有一处定义命名 {模块名}_api.py - services/业务逻辑层封装多接口串联的公共流程 - tests/测试用例层只关注测试逻辑不直接拼接接口路径 ## 强制规范 ### 1. 禁止在测试文件中直接调用 HTTP 客户端 错误示范 api_client.post(/api/v2/orders, json{...}) # 禁止 正确示范 from api.order_api import create_order resp create_order(api_client, ...) # 使用 api 层 ### 2. 优先复用 Service 层 需要多步接口调用时先检查 services/ 是否已有封装方法。 ### 3. 新增接口必须先定义到 api 层 调用 api/ 下不存在的接口时先在对应 {模块}_api.py 中定义函数。 ### 4. 命名规范 - 文件名test_{被测功能}.py - 类名Test{功能名驼峰} - 方法名test_{场景描述} ### 5. 断言规范 - 必须断言 HTTP 状态码 - 必须断言响应体核心业务字段 - 错误场景必须断言 message 字段具体内容 ## 语言规范 - 代码注释使用中文 - docstring 说明函数功能与适用场景3.3 配套的工程目录Rules 里提到的三层结构需要真实目录支撑。建一个最小可跑的骨架api-autotest/ ├── api/ │ └── order_api.py ├── services/ │ └── order_service.py ├── tests/ │ └── order/ │ └── test_create_order.py ├── utils/ │ └── http_client.py ├── conftest.py └── pytest.iniapi/order_api.py里每个接口只定义一次是整个工程的“接口字典”# api/order_api.py 订单模块接口定义所有订单接口调用从这里发出。 from utils.http_client import APIClient def create_order(client: APIClient, product_id: str, quantity: int, address_id: str, coupon_code: str None, remark: str None): 创建订单 payload {product_id: product_id, quantity: quantity, address_id: address_id} if coupon_code: payload[coupon_code] coupon_code if remark: payload[remark] remark return client.post(/api/v2/orders, jsonpayload) def get_order(client: APIClient, order_id: str): 查询订单详情 return client.get(f/api/v2/orders/{order_id})services/order_service.py封装多接口串联的公共流程# services/order_service.py 订单业务逻辑层封装多步骤流程供测试用例调用。 from api.order_api import create_order, get_order def create_and_get_order(client, product_id, quantity, address_id) - dict: 创建订单并立即查询返回完整订单信息。 create_resp create_order(client, product_id, quantity, address_id) assert create_resp.status_code 201, f创建订单失败: {create_resp.text} order_id create_resp.json()[data][order_id] get_resp get_order(client, order_id) assert get_resp.status_code 200 return get_resp.json()[data] def create_pending_order(client) - str: 快速创建一个待支付订单返回 order_id。 resp create_order(client, product_idprod_test_001, quantity1, address_idaddr_test_001) assert resp.status_code 201 return resp.json()[data][order_id]有了这两层测试文件就干净了# tests/order/test_create_order.py from api.order_api import create_order from services.order_service import create_and_get_order class TestCreateOrder: def test_create_order_success(self, api_client): 正常创建订单 order create_and_get_order(api_client, prod_001, 2, addr_123) assert order[status] pending assert order[total_amount] 0 def test_create_order_missing_product_id(self, api_client): 缺少必填字段 product_id resp create_order(api_client, product_id, quantity1, address_idaddr_123) assert resp.status_code 400 assert resp.json()[message] product_id 不能为空3.4 接口知识从哪来Rules 解决的是“怎么写”接口信息解决的是“写什么”。如果团队有 Swagger 或 Postman Collection直接在 Cursor 里docs/api/order-api.md引用文档让 AI 按文档生成。如果文档滞后甚至没有用 F12 抓包打开目标页面切到 Network 标签执行操作找到目标请求右键Copy as cURL把路径、请求头、请求体、响应体一起丢给 AI再补一句功能说明。4. 验证请求让 AI 按 Rules 生成并跑通配置完 Rules 和目录来验证它是否真的生效。4.1 触发一次生成在 Cursor Chat 里输入帮我写一个支付订单的测试用例接口是 POST /api/v2/orders/{order_id}/pay 需要先有一个待支付的订单。如果 Rules 生效AI 会先检查api/order_api.py里有没有pay_order()没有就补上再检查services/order_service.py里有没有create_pending_order()可复用最后生成符合命名规范的测试类。生成结果大致如下# api/order_api.py 中新增 def pay_order(client: APIClient, order_id: str, payment_method: str): 支付订单 return client.post(f/api/v2/orders/{order_id}/pay, json{payment_method: payment_method})# tests/order/test_pay_order.py from api.order_api import pay_order from services.order_service import create_pending_order class TestPayOrder: def test_pay_order_success(self, api_client): 正常支付使用微信支付成功场景 order_id create_pending_order(api_client) resp pay_order(api_client, order_id, wechat) assert resp.status_code 200 assert resp.json()[data][status] paid def test_pay_order_already_paid(self, api_client): 异常重复支付已完成的订单 order_id create_pending_order(api_client) pay_order(api_client, order_id, wechat) resp pay_order(api_client, order_id, wechat) assert resp.status_code 409 assert resp.json()[message] 订单已支付4.2 运行验证在项目根目录执行pytest tests/order/test_pay_order.py -v预期输出类似tests/order/test_pay_order.py::TestPayOrder::test_pay_order_success PASSED tests/order/test_pay_order.py::TestPayOrder::test_pay_order_already_paid PASSED 2 passed in 1.23s 如果两条都绿说明 Rules 约束下的生成代码可以直接用于接口用例。如果test_pay_order_already_paid报 500 而不是 409说明后端对重复支付的处理和 AI 推断不一致这时候直接告诉 AI“重复支付返回的是 500 不是 409请修正断言”它会更新用例。4.3 增量扩展第一个用例跑通后后面就轻松了。第 5 个接口时 AI 已经理解你的项目结构和风格第 20 个接口时你只需说“仿照test_create_order.py写一个取消订单的用例”第 50 个接口时 AI 几乎不需要额外解释。每次引入新模块先精心写一个示范用例它会成为该模块后续所有测试的参考基准。5. 本篇常见错排查5.1 Rules 不生效最常见的原因是globs路径没匹配上。检查.cursor/rules/api-test-rules.mdc里的globs是否覆盖了你正在编辑的文件路径。如果写的是tests/**/*.py但你的测试文件在test/少了个 s规则就不会触发。另外alwaysApply: false时只有操作匹配文件才会注入规则如果你在 Chat 里直接问而不打开对应文件规则可能不生效。5.2 模型报 401 或 404401 通常是 Key 复制不完整或已失效去 TaoToken 控制台重新生成一个。404 多半是 Base URL 写成了https://taotoken.net/api/v1去掉/v1即可。如果 Cursor 版本较老cursor.general.enableOpenAICompatibleApi这个开关可能不存在升级 Cursor 到最新版。5.3 AI 仍在测试文件里直接写 HTTP 调用说明 Rules 里的“禁止”条款没被重视。可以在 Rules 里把错误示范和正确示范都写出来对比越明显AI 越容易遵守。另外确认globs里包含了tests/**/*.py否则写测试文件时规则不注入。5.4 生成的断言字段对不上AI 会推理你没说清楚的字段。比如它可能假设quantity最大值是 99实际系统限制是 999。直接纠正“quantity 最大值是 999超过库存才报错不是超过 999 报错”它会立刻调整边界场景。这个过程类似代码审查AI 写草稿你校正效率远高于从零手写。5.5 pytest 找不到 api 模块在项目根目录建一个conftest.py空文件即可pytest 会把它所在目录加入sys.path。如果还不行在pytest.ini里加[pytest] pythonpath . testpaths tests6. 继续往下走Rules 文件配好之后接口测试自动生成代码这件事就从“碰运气”变成了“按规范产出”。你只需要维护好api/层的接口定义和services/层的公共流程剩下的用例生成交给 AI它会在你定的框架里干活。如果后面要长期做编码和 Agent 类任务可以考虑 Coding Plan 这类按周期计费的方案比按量调用更可控入口在 https://taotoken.net/api-keys 旁边的套餐页可以找到。需要查接入文档的话接入文档页有完整的 Base URL 和参数说明。真正让这套流程跑顺的关键不是 Rules 写得多长而是你愿不愿意在第一个用例上花时间校正。第一个用例校正到位后面几十个用例的生成质量都会跟着上来。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Java Web课设实战:4S店客户管理系统源码部署与答辩指南 2026/9/26 4:23:17

Java Web课设实战:4S店客户管理系统源码部署与答辩指南

简介:面向高校计算机相关专业课程设计与毕业设计场景,这套汽车4S店客户管理系统源码提供可直接运行的前后端实现,覆盖客户档案、车辆信息、预约/接待、维修保养及系统菜单权限等典型业务模块,适合具备Java Web基础、需要借鉴完整项…

阅读更多 →
汽车4S店客户管理系统源码部署与改造实战解析 2026/9/26 4:23:17

汽车4S店客户管理系统源码部署与改造实战解析

简介:这是一份面向计算机、软件工程等专业学生及Java Web初学者的汽车4S店客户管理系统完整源码包,适合作为课程设计、期末大作业或毕业设计的参考实现。系统围绕客户信息管理、预约服务、车辆档案等常见业务模块展开,代码采用典型分层结构&a…

阅读更多 →
CMake 3.26.6 Windows构建校准指南:解决MSVC/Qt/Ninja兼容性问题 2026/9/26 4:23:17

CMake 3.26.6 Windows构建校准指南:解决MSVC/Qt/Ninja兼容性问题

简介:本资源为 CMake 3.26.6 官方 Windows 64 位二进制发行版安装包,面向 C 开发者、跨平台项目构建工程师及高校计算机专业学生,用于替代系统自带或旧版 CMake,解决现代 C 项目(如支持 C20/23、FetchContent、CPM 集成…

阅读更多 →
MCU开发必备:编译、烧录、仿真全流程解析与实战 2026/9/26 4:23:17

MCU开发必备:编译、烧录、仿真全流程解析与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Autosar E2E保护机制实战:从Profile选型到功能安全审核 2026/9/26 4:23:17

Autosar E2E保护机制实战:从Profile选型到功能安全审核

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
智能工厂MES数字化一体化方案:架构、落地与避坑指南 2026/9/26 4:23:10

智能工厂MES数字化一体化方案:架构、落地与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉