L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

api-script-gen-with-apifoxmcp

api-script-gen-with-apifoxmcp

接口自动化脚本生成器。根据用户描述,基于接口索引 knowledge-base/02-api-docs/api-index.md 定位接口,通过 Apifox MCP 实时拉取最新接口详情,在 api-auto-test 框架的 api/services/tests 三层内编写接口自动化脚本。支持单接口用例和多接口串联场景用例(需用户提供串联顺序),异常用例仅在用户明确要求时生成。触发词:"编写接口自动化"、"生成接口脚本"、"接口自动化用例"、"写个场景用例"、"接口串联"、"生成XX模块的自动化脚本"。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: api-script-gen-with-apifoxmcp description: 接口自动化脚本生成器。根据用户描述,基于接口索引 knowledge-base/02-api-docs/api-index.md 定位接口,通过 Apifox MCP 实时拉取最新接口详情,在 api-auto-test 框架的 api/services/tests 三层内编写接口自动化脚本。支持单接口用例和多接口串联场景用例(需用户提供串联顺序),异常用例仅在用户明确要求时生成。触发词:"编写接口自动化"、"生成接口脚本"、"接口自动化用例"、"写个场景用例"、"接口串联"、"生成XX模块的自动化脚本"。

接口自动化脚本生成器

根据用户描述生成接口自动化脚本。接口索引、框架位置与编写边界全部固定,见下文。

固定路径

资源路径
接口索引knowledge-base/02-api-docs/api-index.md(全部 ~270 个端点的路由→模块→ref 映射表)
自动化框架api-auto-test/
编码规范本 skill 的 references/coding_standards.md(编写代码前必读)

重要:

  • 接口总数已超 270 个端点,严禁一次性调用 read_project_oas_ijy213 读取全量接口。
  • 所有接口详情通过 Apifox MCP read_project_oas_ref_resources_ijy213 按 ref 路径实时拉取,确保参数和响应结构永远是最新的。
  • 工作流程:索引匹配 → MCP 拉取详情 → 编码。

硬性规则(不可违反)

  1. 编写范围只限三层:只允许在 api/、services/、tests/ 下新增或修改文件。 core/、config/、common/、utils/、conftest.py 一律只读复用,禁止改动。
  2. 默认只写正向/场景用例:异常用例(非法参数、越权、非法状态流转等负向用例) 必须用户在本次请求中明确说出(如"异常用例"、"负向用例"、"异常场景")才生成; 用户未提及时,只写正向单接口用例或场景串联用例,且不要主动追问"要不要异常用例"。
  3. 场景用例(多接口串联)必须有用户提供的串联顺序:
    • 用户已给出顺序(如"上架→维护→恢复→下架")→ 按该顺序拼接流程,禁止自行增删或重排步骤;
    • 用户说"要场景"但没给顺序 → 必须先询问串联顺序,拿到顺序前不得动手编写;
    • 步骤间的数据传递(如上一步返回的 id 给下一步用)由 AI 依据接口文档自动衔接。
  4. 复用优先:同模块已有 xxx_api.py / xxx_service.py 时在原文件内追加方法, 禁止新建重复文件;已有方法能满足需求时直接复用,禁止重写。 在列表/响应中按字段查找或提取嵌套字段时,复用 utils/jsonpath_utils (jsonpath_first_match / jsonpath_get / jsonpath_find), 禁止在 service 层新增 find_xxx_in_list 这类专用查找方法。
  5. 管理员和匿名身份必须使用 conftest 提供的 fixture:
    • 管理员上下文只能用 conftest 的 session 级 admin fixture, 禁止在用例中自行 AuthService().login(管理员账号) 重复登录;
    • 匿名引导(注册/登录动态用户)只能用 conftest 的 auth_service fixture, 禁止在用例中自行实例化 AuthService()。

工作流程

第 1 步:通过索引定位接口

从用户描述中提取关键词(业务动作、资源名、模块名),搜索 knowledge-base/02-api-docs/api-index.md:

  • 按模块名搜索:如"设备上架"→ 在 device-center 模块下匹配 /api/devices/{id}/shelve
  • 按路径关键词搜索:如"预约"→ 匹配 /api/reservations/* 相关接口
  • 按描述搜索:如"立即使用设备"→ 匹配 immediate-use 接口

确认:

  • 用例类型:单接口正向 / 场景串联(需顺序,见硬性规则 3)/ 异常(需明确要求,见硬性规则 2);
  • 找到匹配后进入第 2 步拉取接口详情;
  • 完全无法匹配时,列出最接近的候选接口让用户确认,不要凭空猜测接口契约。

第 2 步:按需拉取接口详情(全部从 Apifox MCP 实时获取)

对第 1 步匹配到的每个接口,调用 Apifox MCP 拉取最新详情:

调用 read_project_oas_ref_resources_ijy213
       path = 索引中 ref 列的值(如 /paths/_api_devices_shelve.json)

从返回的 OpenAPI schema 中提取:
       - operationId / summary(接口功能描述)
       - parameters(query/path/header 参数及必填性)
       - requestBody(JSON schema,注意 camelCase 字段名)
       - responses(成功响应的数据结构)

注意:

  • 每次只拉取匹配到的 3-8 个接口的 ref 子文件,严禁调用 read_project_oas_ijy213 全量读取;
  • 同时检查 api/、services/ 下是否已有该模块文件及可复用方法;
  • 阅读 references/coding_standards.md,严格按规范编码。

第 3 步:按层编写(api → services → tests)

  • api 层:薄传输层,每方法对应一个端点,直接透传 service 拼好的 params/json,返回原始 Response;
  • services 层:注入 UserContext,负责 snake_case→camelCase 字段映射、可选参数过滤、 body 拼装、parse_response 解析、数据提取;
  • tests 层:pytest + allure,测试文件放入对应业务目录:
接口索引模块tests 目录
user-authtests/auth/
dashboardtests/home/
device-center(市场/查询类)tests/market/
device-center(生命周期/维护类)、operationstests/op/
mytests/my/
system-settingstests/sys/

归属不确定时,参考已有测试文件位置;仍无法判断再询问用户。

第 4 步:验证

在 api-auto-test/ 目录下执行采集检查(不实际调接口):

python -m pytest tests/<目录>/<新文件>.py --collect-only -q

采集通过(无导入/语法错误)即完成;如有报错先修复。除非用户明确要求,不要真正运行用例。

第 5 步:交付说明

简要列出:新增/修改的文件、覆盖的接口(method + path)、用例清单(allure title)、 场景用例的串联顺序;如有依赖环境数据的 pytest.skip 条件一并说明。

Skills enregistrées