MA

miyaliunian/aitest-skills

开发工具
2 stars 质量 52 趋势 12

一套给测试用的技能文档 + 脚本生成工具。写个 Markdown spec,直接出 pytest 脚本。

概览

一套给测试用的技能文档 + 脚本生成工具。写个 Markdown spec,直接出 pytest 脚本。 : - ✅ 已实现:写 spec → ./generate.sh spec.md → 直接生成可跑脚本 - 📖 SKILL 文档:给 AI 看的操作手册,在 Cursor Chat 里 @ SKILL.md 使用 - — 生成 requests + pytest 脚本,跑 API 测试 - — 生成 pytest-playwright 脚本,跑 UI测试 - — 生成 pymysql 插入脚本,自动造测试数据 - — 生成 Locust 脚本,跑 HTTP 接口压测 - — 生成 Playwright 截图对比脚本,跑视觉回归测试 spec 是一个 Markdown 文件,开头带 YAML frontmatter。格式长这样: * steps 和 flows 二选一,取决于你要单场景还是多场景。 * api_pytest 中 cases 与 scenarios 至少填一个,可同时存在。 当项目有多个环境(开发 / 测试 / 生产)时,硬编码 base_url 不方便。生成器支持通过 .env 文件管理环境变量。 --env 指定的文件 > .env 默认文件 > spec 中的 base_url > 系统环境变量 如果你已经有 OpenAPI(Swagger)文档,可以用 --import-openapi 参数直接生成测试 spec,不用手动写。

README

测试脚本生成器(skills-专业版)

一套给测试用的技能文档 + 脚本生成工具。写个 Markdown spec,直接出 pytest 脚本。


快速开始

# 1. clone
git clone  skills-专业版
cd skills-专业版

# 2. 跑一个内置模板
./generate.sh templates/api_smoke.md
cd output && pytest -v

三步搞定。不用改代码,改改 spec 里的地址和接口就行。


目录结构

skills-专业版/
├── generate.sh              # 一键生成脚本入口 ✅
├── codegen/                 # 代码生成引擎 ✅
│   ├── run_spec.py          #   spec → 脚本(支持 4 种 kind)
│   ├── requirements.txt     #   依赖声明
│   └── examples/            #   spec 示例
├── templates/               # 内置模板(10 个)✅
├── output/                  # 生成的脚本输出目录 ✅
├── .cursor/rules/           # Cursor AI 编排规则 ✅
├── testcase-skills/         # 用例生成技能链 📖 SKILL 文档
│   ├── planner/             #   规划:拆解需求、定策略
│   ├── analyzer/            #   分析:提取接口、规则、场景
│   ├── generator/           #   生成:批量产出用例
│   └── reviewer/            #   评审:质量检查
├── api-skills/              # API 测试技能链 📖 SKILL 文档
│   ├── 分析/                #   文档解析、接口分析、意图识别
│   ├── 规划/                #   测试策略规划
│   ├── 执行/                #   用例生成、脚本生成、执行报告
│   └── 自我修复/            #   失败用例自动修复
├── UI-skills/               # UI测试技能链 📖 SKILL 文档
│   ├── 分析/                #   UI 元素识别、图片用例描述
│   ├── 规划/                #   测试策略规划
│   ├── 执行/                #   Playwright 代码生成、执行报告
│   └── 自我修复/            #   失败用例自动修复
├── data-factory/            # 造数(生成 MySQL 插入脚本)✅
├── defect-analysis/         # 缺陷智能分析 📖 SKILL 文档
├── requirement-modeling/    # 需求建模与任务拆解 📖 SKILL 文档
├── special-testing/         # 专项测试 📖 SKILL 文档 + ✅ 性能测试
├── testcase-data-generator/ # 测试数据生成 📖 SKILL 文档
├── intent-router/           # 意图路由 📖 SKILL 文档
└── bug-reporter/            # Bug 报告 📖 SKILL 文档

标注说明:

  • ✅ 已实现:写 spec → ./generate.sh spec.md → 直接生成可跑脚本
  • 📖 SKILL 文档:给 AI 看的操作手册,在 Cursor Chat 里 @ SKILL.md 使用

内置模板

模板 用途 kind 生成语言 运行方式
templates/api_smoke.md API 冒烟测试 api_pytest Python + requests pytest -v
templates/api_auth.md API + Bearer Token api_pytest Python + requests pytest -v
templates/api_db_check.md API + 数据库对比 api_pytest Python + requests pytest -v
templates/api_scenario_register.md API 多步场景(注册→登录) api_pytest Python + requests pytest -v
templates/ui_login.md UI 登录流程 ui_pytest_playwright Python + Playwright pytest -v
templates/ui_form.md UI 表单填写 ui_pytest_playwright Python + Playwright pytest -v
templates/ui_e2e.md UI 端到端流程 ui_pytest_playwright Python + Playwright pytest -v
templates/ui_login_scenarios.md 多场景登录 ui_pytest_playwright Python + Playwright pytest -v
templates/data_factory.md 自动生成测试数据 data_factory Python + pymysql python data_factory.py
templates/perf_test.md HTTP 接口压测 perf_test Python + Locust locust -f perf_test.py
templates/visual_regression.md UI 视觉回归测试 visual_regression Python + Playwright pytest visual_regression.py

目前生成器支持五种 kind:

  • api_pytest — 生成 requests + pytest 脚本,跑 API 测试
  • ui_pytest_playwright — 生成 pytest-playwright 脚本,跑 UI测试
  • data_factory — 生成 pymysql 插入脚本,自动造测试数据
  • perf_test — 生成 Locust 脚本,跑 HTTP 接口压测
  • visual_regression — 生成 Playwright 截图对比脚本,跑视觉回归测试

跑 ./generate.sh 不带参数,会打印完整列表和用法。


自己写 spec

模板不够用?自己写一个。

spec 是一个 Markdown 文件,开头带 YAML frontmatter。格式长这样:

---
kind: api_pytest
base_url: http://127.0.0.1:8080
cases:
  - id: TC-001
    method: GET
    path: /api/users
    expect_status: 200
  - id: TC-002
    method: POST
    path: /api/users
    json_body:
      name: "张三"
      email: "[email protected]"
    expect_status: 201
---

# 用户接口测试

- TC-001: 获取用户列表
- TC-002: 创建用户

写完存成 .md,直接传给生成器:

./generate.sh my_spec.md

就生成了。

spec 字段说明:

字段 必填 说明
kind 是 脚本类型:api_pytest 或 ui_pytest_playwright
base_url 是 接口地址
cases 二选一* 单步用例列表(api_pytest),每个 case 一条测试
scenarios 二选一* 多步串联场景(api_pytest),同一函数内顺序请求,支持 capture / {变量} / no_auth
steps 是* UI 操作步骤(ui_pytest_playwright 用),和 steps 二选一
flows 是* 多场景 UI 流程(ui_pytest_playwright 用),和 steps 二选一

* steps 和 flows 二选一,取决于你要单场景还是多场景。
* api_pytest 中 cases 与 scenarios 至少填一个,可同时存在。

case 字段(api_pytest):

字段 必填 说明
id 是 用例编号
method 是 HTTP 方法:GET/POST/PUT/DELETE/PATCH
path 是 接口路径
json_body 否 POST/PUT 的请求体
expect_status 是 期望的状态码

step 字段(ui_pytest_playwright):

字段 必填 说明
action 是 操作类型:goto / fill / click / select_option / press / wait_timeout_ms
path 否 goto 时的页面路径
l1_test_id 否* 元素定位(test id),和 l1_label / l1_placeholder / l2_css 四选一
l1_label 否* 元素定位(label)
l1_placeholder 否* 元素定位(placeholder)
l2_css 否* 元素定位(CSS 选择器)
value 否 fill / select_option 的值

* 元素定位字段四选一,优先用 l1_test_id。


环境变量管理

当项目有多个环境(开发 / 测试 / 生产)时,硬编码 base_url 不方便。生成器支持通过 .env 文件管理环境变量。

快速开始

# 1. 复制示例文件
cp .env.example .env.staging

# 2. 编辑 .env.staging,填入各环境的地址和认证信息
# 3. 生成脚本时指定环境
./generate.sh my_spec.md --env .env.staging

.env 文件格式

BASE_URL=http://staging.example.com
TEST_USERNAME=admin
TEST_PASSWORD=secret123
UI_BASE_URL=http://staging-ui.example.com

–env 参数

参数 说明 示例
--env 指定 .env 文件路径 ./generate.sh spec.md --env .env.staging
不指定 使用 spec 中的 base_url,或环境变量 ./generate.sh spec.md

优先级

--env 指定的文件 > .env 默认文件 > spec 中的 base_url > 系统环境变量

多环境示例

# 开发环境
./generate.sh my_spec.md --env .env.development

# 测试环境
./generate.sh my_spec.md --env .env.staging

# 生产环境(只读模式)
./generate.sh my_spec.md --env .env.production

生成的脚本会自动从 .env 文件中读取变量,无需手动修改代码。


OpenAPI 导入

如果你已经有 OpenAPI(Swagger)文档,可以用 --import-openapi 参数直接生成测试 spec,不用手动写。

用法

# 从本地文件导入
./generate.sh --import-openapi openapi.json

# 从 URL 导入
./generate.sh --import-openapi http://localhost:8899/api/docs.json

# 指定输出文件名
./generate.sh --import-openapi openapi.yaml -o my_spec.md

工作流程

  1. 读取 OpenAPI 文档(支持 JSON 和 YAML 格式)
  2. 解析所有接口定义(路径、方法、参数、响应)
  3. 自动生成对应的 spec 文件
  4. 你可以在此基础上补充断言和边界测试

示例

# 导入后生成 spec
./generate.sh --import-openapi openapi.json -o api_spec.md

# 查看生成的 spec
cat api_spec.md

# 根据生成的 spec 产出 pytest 脚本
./generate.sh api_spec.md

注意事项

  • 支持 OpenAPI 3.0 和 Swagger 2.0 格式
  • 导入的 spec 只包含基础接口调用,复杂断言需要手动补充
  • 建议导入后检查一遍,确认路径和方法正确

依赖

  • Python 3.8+
  • PyYAML(pip install PyYAML)

跑 generate.sh 的时候如果缺依赖会自动装,不用管。

生成出来的脚本跑 pytest 需要额外装:

# API 测试
pip install pytest requests allure-pytest

# UI测试
pip install pytest pytest-playwright
playwright install chromium

两条路混着用

路径一:本地生成(不需要 AI)

写 spec → 跑 ./generate.sh → 出脚本。稳定、可版本管理。

./generate.sh templates/api_smoke.md
./generate.sh templates/ui_login.md
cd output && pytest -v

路径二:AI 辅助生成(Cursor / Copilot)

在 Cursor Chat 里 @ 引用 SKILL.md,告诉 AI 你要测什么。

@testcase-skills/generator/SKILL.md @api-skills/执行/01_测试用例生成.md
帮我给 http://localhost:8899 的 /api/users 接口生成测试用例

AI 会读 SKILL.md 里的测试设计原则,然后帮你生成用例和脚本。

混用方式

场景 用哪条路
快速验证接口 路径一(./generate.sh templates/api_smoke.md)
复杂业务逻辑 路径二(AI 读 SKILL.md 后生成)
团队共享规范 路径一(spec 文件提交到 Git)
UI 自动化 路径一(简单流程用 spec)或路径二(复杂交互让 AI 写)

先跑路径一生成基础脚本,再用路径二让 AI 补充边界 case,两条路不冲突。

Cursor 配置

用 Cursor 打开 skills-专业版 目录,.cursor/rules/ 下的规则会自动生效。AI 会按规则引用各 SKILL.md。


常见问题

Q: 生成出来的脚本跑不通? A: 先看 base_url 改对了没,再看服务是不是起了。

Q: 怎么加自己的模板? A: 在 templates/ 下面新建 .md 文件,按 spec 格式写就行。

Q: 能生成其他语言的测试脚本吗? A: 目前只支持 Python。后续计划支持 Java / Go 等语言。

在 GitHub 查看完整 README

推荐工具

换一个关键词,或者移除筛选条件。

安装

npx skillfish add miyaliunian/aitest-skills
新手?先看 mcpskill.org 教程 →