# testflow
**Repository Path**: zqsssss/testflow
## Basic Information
- **Project Name**: testflow
- **Description**: 测试用例管理平台
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-01-10
- **Last Updated**: 2026-01-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TestFlow 测试管理平台
TestFlow 是一个现代化的全栈测试管理平台,旨在为测试团队提供高效的项目管理、用例管理、缺陷跟踪以及 AI 辅助测试能力。
## 核心特性
## 快速开始
### 系统要求
**最低配置:**
- CPU: 双核
- 内存: 4GB
- 硬盘: 1GB 可用空间
- 操作系统: Windows 10+, macOS 10.15+, Ubuntu 20.04+
**软件依赖:**
- Python 3.11+ (推荐 3.11 或 3.12)
- Node.js 20+
- MySQL 8.0+
- Docker Desktop (用于 Redis,推荐)
- Git
### 本地开发环境搭建
> 💡 **启动顺序**: MySQL → Redis (可选) → 后端 → 前端
* **缺陷跟踪**: 完整的缺陷生命周期管理,支持缺陷状态流转、指派与统计。
* **AI 辅助**: 集成 Google Gemini AI,支持一键生成测试用例,提升编写效率。
**方案 3:使用 Docker(推荐,最简单)**
1. 启动 Docker Desktop(如未安装,请访问 [Docker 官网](https://www.docker.com/products/docker-desktop))
2. 运行 Redis 容器:
* **全栈架构**: 采用 React + FastAPI + MySQL + Redis 的主流技术栈,性能优异且易于扩展。
# 拉取并运行 Redis 7 Alpine 镜像
docker run -d -p 6379:6379 --name testflow-redis redis:7-alpine
# 验证 Redis 运行
docker exec testflow-redis redis-cli ping
# 返回 PONG 表示成功
## 技术栈
**Docker Redis 管理命令:**
```bash
# 查看容器状态
docker ps -a --filter name=testflow-redis
# 停止 Redis
docker stop testflow-redis
# 启动 Redis
docker start testflow-redis
# 重启 Redis
docker restart testflow-redis
# 查看日志
docker logs testflow-redis
# 删除容器(需要先停止)
docker stop testflow-redis
docker rm testflow-redis
```
### 前端 (Frontend)
* **框架**: React 19
* **构建工具**: Vite 6
* **语言**: TypeScript
* **路由**: React Router 7
* **UI 组件**: Lucide React (图标)
启动成功时,控制台会显示:
```
==================================================
TestFlow Backend Starting...
==================================================
[Database] 数据库表已初始化
[WebSocket] Redis Pub/Sub 已连接 # Redis 已连接
# 或
[WebSocket] Redis 连接失败,使用单机模式 # Redis 未连接(仍可正常使用)
[Server] 服务启动于 http://0.0.0.0:8000
[API Docs] Swagger UI: http://localhost:8000/docs
==================================================
INFO: Application startup complete.
```
* **AI 集成**: Google GenAI SDK
### 后端 (Backend)
如果你已经完成环境配置,使用以下命令快速启动:
```bash
# 1. 启动 Redis(可选,推荐使用 Docker)
docker start testflow-redis
# 如果容器不存在,使用以下命令创建:
# docker run -d -p 6379:6379 --name testflow-redis redis:7-alpine
# 2. 启动后端(在 backend 目录)
cd backend
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
python run.py
# 3. 启动前端(在项目根目录,新终端)
cd ..
npm run dev
```
**访问地址:**
- 前端: http://localhost:3000 (默认账号: `admin` / `admin123`)
- 后端: http://localhost:8000
- API 文档: http://localhost:8000/docs
---
### 容器化部署 (Docker Compose)
* **框架**: FastAPI (Python 3.11+)
* **服务器**: Uvicorn
## 故障排查
### 后端问题
**问题 1: `ModuleNotFoundError: No module named 'uvicorn'`**
- 原因:未激活虚拟环境
- 解决:运行 `venv\Scripts\activate` (Windows) 或 `source venv/bin/activate` (Linux/Mac)
**问题 2: `pydantic-core` 编译失败,需要 Rust**
- 原因:Python 版本太新(如 3.14),没有预编译包
- 解决方案 1(推荐):使用 Python 3.11 或 3.12
- 解决方案 2:先运行 `pip install "pydantic>=2.10" --only-binary :all:`
**问题 3: Redis 连接失败**
- 原因:Redis 服务未启动
- 影响:降级为单机模式,WebSocket 实时推送不可用,其他功能正常
- 解决:按照文档安装并启动 Redis(推荐使用 Docker)
**问题 4: 数据库连接失败**
- 检查 MySQL 服务是否运行
- 检查 `.env` 文件中的 `DATABASE_URL` 配置
- 确认数据库 `testflow` 已创建
### 前端问题
**问题 1: 端口 3000 被占用**
- 解决:修改 `vite.config.ts` 中的端口配置,或关闭占用端口的程序
**问题 2: 无法连接后端**
- 检查后端服务是否正常运行(访问 http://localhost:8000/health)
- 检查 `.env.local` 中的 `VITE_API_BASE_URL` 配置
- 检查浏览器控制台的网络请求错误
**问题 3: 登录失败**
- 确认使用默认账号:`admin` / `admin123`
- 检查后端日志,确认数据库初始化成功
- 尝试重新运行 `python -m scripts.init_db`
### Docker 问题
**问题 1: Docker Desktop 未启动**
- 错误信息:`cannot connect to the docker daemon`
- 解决:手动启动 Docker Desktop,等待 20-30 秒后重试
**问题 2: Redis 容器无法启动**
- 检查端口 6379 是否被占用:`netstat -ano | findstr 6379` (Windows)
- 删除旧容器:`docker rm -f testflow-redis`
- 重新创建容器
---
## 性能优化建议
### 生产环境部署
1. **修改默认密钥和密码**
```env
JWT_SECRET_KEY=使用强随机字符串
DATABASE_URL=使用复杂密码
```
2. **启用 Redis**
- 提升 WebSocket 性能
- 支持多实例部署
3. **配置 Nginx 反向代理**
- 启用 HTTPS
- 配置请求限流
- 启用 Gzip 压缩
4. **数据库优化**
- 定期备份数据
- 添加适当的索引
- 监控慢查询
### 开发最佳实践
1. **使用虚拟环境**
- 隔离项目依赖
- 避免版本冲突
2. **启用热重载**
- 后端:`--reload` 参数
- 前端:Vite 自动支持
3. **查看 API 文档**
- Swagger UI: http://localhost:8000/docs
- 支持在线测试 API
4. **使用浏览器开发者工具**
- Network 标签查看 API 请求
- Console 标签查看错误信息
---
* **数据库 ORM**: SQLAlchemy
* **数据验证**: Pydantic
* **认证**: JWT (JSON Web Tokens)
* **AI 集成**: Google Generative AI
### 基础设施 (Infrastructure)
* **数据库**: MySQL 8.0
* **缓存**: Redis 7
* **容器化**: Docker & Docker Compose
* **反向代理**: Nginx
## 界面预览






## 快速开始
### 本地开发环境搭建
#### 1. 后端启动
**前置依赖:** Python 3.11+、MySQL 8+、Redis 7+(可选)
> 💡 **Python 版本说明**: 推荐使用 Python 3.11 或 3.12 以获得最佳兼容性。Python 3.14 等较新版本虽然可用,但部分依赖包可能需要从源码编译。
> 💡 **Redis 说明**: Redis 用于 WebSocket 消息分发。**如果未安装,应用会自动降级为单机模式**,不影响核心功能使用。
**步骤 1:确保数据库运行(Redis 可选)**
```bash
# 必需:确保 MySQL 服务已启动(默认端口 3306)
# 可选:确保 Redis 服务已启动(默认端口 6379)
```
> 💡 **Redis 说明**: Redis 用于 WebSocket 消息分发。如果未启动,应用会自动降级为单机模式,基础功能不受影响。
**步骤 2:进入后端目录**
```bash
cd backend
```
> ⚠️ **重要**: 后续所有步骤都需要在 `backend` 目录下执行
**步骤 3:配置环境变量**
复制环境变量模板文件:
```bash
# Windows PowerShell
copy env.example .env
# Linux/Mac
cp env.example .env
```
编辑 `.env` 文件,修改以下关键配置:
```env
# 数据库配置(根据实际情况修改)
DATABASE_URL=mysql+pymysql://root:your_password@localhost:3306/testflow
# Redis 配置
REDIS_URL=redis://localhost:6379/0
# JWT 密钥(生产环境请使用强密码)
JWT_SECRET_KEY=your-secret-key-change-in-production
# AI 功能(可选)
GOOGLE_API_KEY=your_gemini_api_key
```
**步骤 4:创建并激活虚拟环境(推荐)**
```bash
# Windows - 创建虚拟环境
python -m venv venv
# Windows - 激活虚拟环境(每次打开新终端都需要执行)
venv\Scripts\activate
# Linux/Mac - 创建虚拟环境
python -m venv venv
# Linux/Mac - 激活虚拟环境
source venv/bin/activate
```
> ⚠️ **重要**: 激活后,命令提示符前会显示 `(venv)`,表示当前在虚拟环境中
**步骤 5:安装依赖**
```bash
# 确保你在 backend 目录下
# 先升级 pip(推荐)
python -m pip install --upgrade pip
# 安装所有依赖
pip install -r requirements.txt
```
> 💡 如果出现 "No such file" 错误,请确认当前在 backend 目录
>
> ⚠️ **遇到编译错误?** 如果遇到 `pydantic-core` 需要 Rust 编译器的错误:
> - 方案 1:使用 Python 3.11 或 3.12(推荐,有预编译包)
> - 方案 2:先运行 `pip install "pydantic>=2.10" --only-binary :all:` 然后再安装其他依赖
**步骤 6:初始化数据库**
```bash
# 创建数据库表结构和初始数据
python -m scripts.init_db
```
**步骤 7:启动后端服务**
```bash
# ⚠️ 重要:确保已激活虚拟环境
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# 然后启动服务(开发模式,支持热重载)
python run.py
# 或使用 uvicorn 命令
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```
> ⚠️ **注意**: 必须先激活虚拟环境才能运行,否则会提示找不到模块
**验证启动成功:**
* 后端 API: `http://localhost:8000`
* Swagger 文档: `http://localhost:8000/docs`
* 健康检查: `http://localhost:8000/health`
**常见启动问题:**
* ❌ `ModuleNotFoundError: No module named 'uvicorn'` → 需要先激活虚拟环境
* ⚠️ `Redis 连接失败` → Redis 未启动,应用会降级为单机模式(可继续使用)
* ❌ 数据库连接失败 → 检查 MySQL 服务和 `.env` 中的数据库配置
---
**如何安装 Redis(可选):**
📦 Windows 安装 Redis(点击展开)
**方案 1:使用 Memurai(推荐)**
1. 访问 [Memurai 官网](https://www.memurai.com/get-memurai) 下载 Windows 版 Redis
2. 安装并启动 Memurai 服务
**方案 2:使用 WSL2**
```bash
# 在 WSL2 中安装
sudo apt-get update
sudo apt-get install redis-server
# 启动 Redis
sudo service redis-server start
```
**方案 3:使用 Docker**
```bash
docker run -d -p 6379:6379 --name redis redis:7-alpine
```
📦 Linux/Mac 安装 Redis(点击展开)
**Ubuntu/Debian:**
```bash
sudo apt-get update
sudo apt-get install redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server
```
**macOS (使用 Homebrew):**
```bash
brew install redis
brew services start redis
```
**验证 Redis 运行:**
```bash
redis-cli ping
# 返回 PONG 表示成功
```
---
#### 2. 前端启动
**前置依赖:** Node.js 20+
**步骤 1:返回项目根目录**
```bash
# 如果在 backend 目录,先返回根目录
cd ..
```
**步骤 2:安装依赖**
```bash
npm install
```
**步骤 3:配置环境变量(可选)**
如需自定义后端 API 地址,创建 `.env.local` 文件:
```env
# 后端 API 地址(默认值,可不配置)
VITE_API_BASE_URL=http://localhost:8000/api/v1
# 仅当前端直连 Gemini 时配置(不推荐,建议通过后端代理)
# GEMINI_API_KEY=YOUR_GEMINI_KEY
```
**步骤 4:启动开发服务器**
```bash
npm run dev
```
**验证启动成功:**
* 前端应用: `http://localhost:3000`
* 默认管理员账号: `admin` / `admin123`
**常见问题:**
* 如果提示端口被占用,可修改 `vite.config.ts` 中的端口配置
* 如果无法连接后端,请检查 `VITE_API_BASE_URL` 配置和后端服务状态
### 容器化部署 (Docker Compose)
推荐使用 Docker Compose 进行一键部署,适合测试或生产环境。
**前置依赖:** Docker Desktop (包含 Docker Compose v2)
1. **配置环境变量**:
确保已设置必要的环境变量,特别是 `JWT_SECRET_KEY`。可以在 `backend/.env` 中设置,或者在运行 docker compose 命令时传入。
2. **一键启动**:
在项目根目录下执行:
```bash
docker compose -f ./backend/docker-compose.yml up -d --build
```
3. **访问服务**:
* **前端应用**: `http://localhost:3000`
* **后端 API 文档**: `http://localhost:8000/docs`
4. **端口映射说明**:
* MySQL: `3307` (宿主机) -> `3306` (容器)
* Redis: `6380` (宿主机) -> `6379` (容器)
* Backend: `8000` (宿主机) -> `8000` (容器)
* Frontend: `3000` (宿主机) -> `80` (容器,经 Nginx 转发)
## 目录结构
```
testflow/
├── backend/ # 后端代码
│ ├── app/ # 应用核心逻辑
│ │ ├── api/ # API 路由
│ │ ├── core/ # 核心配置与工具
│ │ ├── models/ # 数据库模型
│ │ ├── schemas/ # Pydantic 数据模型
│ │ └── services/ # 业务逻辑服务
│ ├── scripts/ # 脚本文件 (如数据库初始化)
│ ├── Dockerfile # 后端 Docker 构建文件
│ ├── docker-compose.yml # Docker Compose 配置文件
│ └── requirements.txt # Python 依赖
├── src/ # 前端代码 (假设在根目录或 src 目录下,根据实际情况调整)
│ ├── components/ # React 组件
│ ├── context/ # Context API
│ ├── services/ # API 请求服务
│ └── ...
├── Dockerfile.frontend # 前端 Docker 构建文件
├── nginx.conf # Nginx 配置文件
├── package.json # 前端依赖配置
└── vite.config.ts # Vite 配置文件
```
## 环境变量详解
### 前端
| 变量名 | 说明 | 默认值 |
| :--- | :--- | :--- |
| `VITE_API_BASE_URL` | 后端 API 接口地址 | `http://localhost:8000/api/v1` |
| `GEMINI_API_KEY` | Gemini API Key (前端直连模式) | - |
### 后端
| 变量名 | 说明 | 示例 |
| :--- | :--- | :--- |
| `DATABASE_URL` | MySQL 数据库连接串 | `mysql+pymysql://root:root@mysql:3306/testflow` |
| `REDIS_URL` | Redis 连接串 | `redis://redis:6379/0` |
| `JWT_SECRET_KEY` | JWT 签名密钥 (生产环境务必修改) | `your-secret-key` |
| `GOOGLE_API_KEY` | Google Gemini API Key | - |
| `CORS_ORIGINS` | 允许跨域的源 (逗号分隔) | `http://localhost:3000` |
| `DEBUG` | 调试模式开关 | `false` |
## 贡献指南
欢迎提交 Issue 和 Pull Request 来改进 TestFlow!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request
## 许可证
[MIT](LICENSE)