基于 AI 的智能测试用例自动生成工具,能够解析需求文档(PRD)、接口文档(OpenAPI/Swagger)或 Word 文档,自动生成结构化的测试用例,并导出为专业格式的 Excel 文件。
English | 简体中文
| 格式 | 支持情况 | 说明 |
|---|---|---|
| Markdown (.md) | ✅ 完全支持 | 解析 PRD、需求文档 |
| Word (.docx) | ✅ 完全支持 | 解析需求规格说明书 |
| OpenAPI/Swagger (.json) | ✅ 完全支持 | 解析 API 接口定义 |
| 纯文本 | ✅ 完全支持 | 直接粘贴文本内容 |
-
多类型测试用例:支持 5 种测试用例类型的智能生成
- 功能测试(Happy Path)
- 边界测试(Boundary Testing)
- 异常测试(Error Testing)
- 流程测试(User Flow)
- 接口测试(API Testing)
-
灵活的 AI 配置:支持任何 OpenAI 兼容 API
- OpenAI GPT-4 / GPT-4o
- DeepSeek V3 / Codestral
- Moonshot (月之暗面)
- 本地 Ollama
- 其他兼容 API
- 在线管理:Web UI 直接查看、编辑、删除测试用例
- 多维度筛选:按文档、模块、优先级、类型筛选
- 批量操作:支持批量删除、批量导出
- Excel 导出:专业格式,带颜色标识和合并单元格
- PDF 导出:适合打印和分享
- 按条件导出:支持筛选后导出
| 技术 | 版本要求 | 说明 |
|---|---|---|
| Python | 3.11+ | 运行环境 |
| FastAPI | ≥0.115.0 | Web 框架 |
| Pydantic | ≥2.9.0 | 数据验证 |
| OpenAI SDK | ≥1.50.0 | AI 接口调用 |
| python-docx | ≥1.1.0 | Word 文档解析 |
| openpyxl | ≥3.1.5 | Excel 文件生成 |
| aiosqlite | ≥0.20.0 | 异步 SQLite |
| Playwright | ≥1.40.0 | 自动化测试(可选) |
- 原生 HTML5 + CSS3 + JavaScript(ES6+)
- 无需任何前端框架
- 响应式设计,支持桌面和移动端
- SQLite:轻量级嵌入式数据库,开箱即用
- 文件存储:本地文件系统存储上传文档
- Python 3.11 或更高版本
- Windows / macOS / Linux
git clone https://github.com/Rue1218/testcase-generator.git
cd testcase-generator# 使用 uv(推荐,更快)
uv venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# 或使用 Python 内置 venv
python -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windowspip install -r requirements.txt在项目根目录创建 .env 文件:
# OpenAI 示例
AI_BASE_URL=https://api.openai.com/v1
AI_API_KEY=sk-your-api-key
AI_MODEL=gpt-4o
# 或 DeepSeek 示例
# AI_BASE_URL=https://api.deepseek.com/v1
# AI_API_KEY=your-deepseek-api-key
# AI_MODEL=deepseek-chat
# 或本地 Ollama 示例
# AI_BASE_URL=http://localhost:11434/v1
# AI_API_KEY=ollama
# AI_MODEL=qwen2.5python run.py打开浏览器访问:http://localhost:8000
API 文档:**http://localhost:8000/docs**(Swagger UI)
进入「文档上传」页面,选择以下任一方式:
- 文件上传:支持 .md、.docx、.json 格式
- 粘贴文本:直接在文本框输入内容
- 导入 API:输入 OpenAPI/Swagger URL 或粘贴 JSON
- 在文档列表中找到刚上传的文档
- 点击「AI 生成」按钮
- 选择要生成的测试用例类型:
- 功能测试
- 边界测试
- 异常测试
- 流程测试
- 接口测试
- 设置生成数量(默认 10 条)
- 点击「开始生成」
进入「测试用例」页面:
- 查看:点击用例查看详细信息
- 编辑:修改用例的任何字段
- 删除:删除单个或批量删除
- 筛选:按文档、模块、优先级、类型筛选
- 选择要导出的用例(可先筛选)
- 点击「导出 Excel」或「导出 PDF」
- 文件将自动下载
testcase-generator/
├── backend/
│ ├── __init__.py
│ ├── main.py # FastAPI 应用入口
│ ├── config.py # 配置管理(AI、数据库路径等)
│ ├── models.py # Pydantic 数据模型
│ ├── database.py # SQLite 数据库操作
│ │
│ ├── parsers/ # 文档解析器
│ │ ├── __init__.py
│ │ ├── markdown_parser.py # Markdown 解析
│ │ ├── docx_parser.py # Word 文档解析
│ │ ├── openapi_parser.py # OpenAPI/Swagger 解析
│ │ ├── pdf_parser.py # PDF 解析
│ │ └── spreadsheet.py # 表格数据解析
│ │
│ ├── generators/ # AI 生成器
│ │ ├── __init__.py
│ │ └── ai_generator.py # AI 测试用例生成核心
│ │
│ ├── exporters/ # 导出器
│ │ ├── __init__.py
│ │ ├── excel_exporter.py # Excel 导出
│ │ └── pdf_exporter.py # PDF 导出
│ │
│ ├── routers/ # API 路由
│ │ ├── __init__.py
│ │ ├── _shared.py # 共享工具
│ │ ├── documents.py # 文档管理
│ │ ├── testcases.py # 测试用例
│ │ ├── config.py # AI 配置
│ │ ├── export.py # 导出
│ │ ├── executor.py # 测试执行
│ │ ├── suites.py # 测试套件
│ │ ├── tasks.py # 异步任务
│ │ ├── logs.py # 日志管理
│ │ ├── templates.py # 模板管理
│ │ ├── trash.py # 回收站
│ │ └── system.py # 系统信息
│ │
│ ├── executor/ # 测试执行器
│ │ ├── __init__.py
│ │ ├── runner.py # 测试运行器
│ │ ├── env_check.py # 环境检查
│ │ ├── prompts.py # AI 提示词
│ │ ├── suites.py # 测试套件
│ │ └── report.py # 报告生成
│ │
│ └── utils/ # 工具函数
│ ├── __init__.py
│ └── sanitizer.py # 输入净化
│
├── frontend/
│ ├── index.html # 主页面
│ ├── style.css # 样式文件
│ └── app.js # 前端逻辑
│
├── uploads/ # 上传文件存储
├── backups/ # 数据库备份
├── test_results/ # 测试结果存储
│
├── requirements.txt # Python 依赖
├── run.py # 启动脚本
├── setup.sh # Linux/macOS 安装脚本
├── install_uv.sh # UV 安装脚本
├── start.bat # Windows 启动脚本
│
└── README.md # 项目说明文档
启动服务后访问 http://localhost:8000/docs 查看完整的 Swagger UI 文档。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/documents/upload |
上传文档文件 |
| POST | /api/documents/text |
提交文本内容 |
| GET | /api/documents |
获取文档列表 |
| GET | /api/documents/{id} |
获取文档详情 |
| DELETE | /api/documents/{id} |
删除文档 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/testcases/generate |
AI 生成测试用例 |
| GET | /api/testcases |
获取用例列表(支持筛选) |
| GET | /api/testcases/{id} |
获取用例详情 |
| PUT | /api/testcases/{id} |
更新用例 |
| DELETE | /api/testcases/{id} |
删除用例 |
| DELETE | /api/testcases |
批量删除 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/export/excel |
导出 Excel |
| GET | /api/export/pdf |
导出 PDF |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/config |
获取当前配置 |
| PUT | /api/config |
更新配置 |
| POST | /api/config/test |
测试连接 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/executor/run |
运行测试 |
| GET | /api/executor/status/{task_id} |
获取执行状态 |
| GET | /api/executor/logs/{task_id} |
获取执行日志 |
curl -X POST "http://localhost:8000/api/testcases/generate" \
-H "Content-Type: application/json" \
-d '{
"document_id": 1,
"case_type": "功能测试",
"count": 10
}'curl -X GET "http://localhost:8000/api/export/excel?document_id=1&priority=P0" \
-o testcases.xlsx每条测试用例包含以下字段:
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
| 用例编号 | string | 唯一标识符 | TC-001 |
| 所属模块 | string | 功能模块名称 | 用户管理 |
| 用例标题 | string | 测试用例名称 | 正确用户名密码登录成功 |
| 前置条件 | string | 执行前提条件 | 用户已注册且未登录 |
| 测试步骤 | string | 详细操作步骤 | 1. 打开登录页 2. 输入正确用户名 3. 输入正确密码 4. 点击登录 |
| 预期结果 | string | 期望结果 | 登录成功,跳转至首页 |
| 优先级 | enum | P0/P1/P2/P3 | P0 |
| 用例类型 | enum | 功能/边界/异常/流程/接口 | 功能测试 |
| 创建时间 | datetime | 创建时间戳 | 2026-05-03 10:00:00 |
| 优先级 | 说明 | 典型场景 |
|---|---|---|
| P0 | 核心功能 | 登录、支付等关键流程 |
| P1 | 重要功能 | 核心业务逻辑 |
| P2 | 一般功能 | 普通功能模块 |
| P3 | 辅助功能 | 边缘场景、低频功能 |
AI_BASE_URL=https://api.openai.com/v1
AI_API_KEY=sk-xxxxx
AI_MODEL=gpt-4oAI_BASE_URL=https://api.deepseek.com/v1
AI_API_KEY=sk-xxxxx
AI_MODEL=deepseek-chatAI_BASE_URL=https://api.moonshot.cn/v1
AI_API_KEY=sk-xxxxx
AI_MODEL=moonshot-v1-8kAI_BASE_URL=http://localhost:11434/v1
AI_API_KEY=ollama
AI_MODEL=qwen2.5- 点击右上角「设置」图标
- 填写 API Base URL、API Key、Model
- 点击「测试连接」验证配置
- 保存配置
确保已激活虚拟环境并安装依赖:
source .venv/bin/activate # Linux/macOS
# 或
.venv\Scripts\activate # Windows
pip install -r requirements.txt- 检查 API Key 是否正确
- 确认网络可以访问 AI 服务商
- 查看日志中的具体错误信息
- 可在设置中点击「测试连接」排查
尝试以下方法:
- 使用 Microsoft Excel 打开(而非 WPS)
- 检查数据中是否有特殊字符
- 增加列宽设置
- 单个文档建议不超过 1MB
- 大型文档可分批上传
- 或使用文本粘贴方式分段处理
- 数据库:
data.db(SQLite 文件) - 上传文件:
uploads/目录 - 备份文件:
backups/目录
建议定期备份 data.db 和 uploads/ 目录。
本项目采用 MIT 许可证。
- FastAPI - 现代快速的 Web 框架
- OpenAI - AI 能力支持
- python-docx - Word 文档处理
- openpyxl - Excel 文件生成