forked from datawhale/whale-town-front
- 添加UI测试场景,支持模拟各种认证场景 - 实现API测试脚本,覆盖登录、注册、验证码等接口 - 添加测试文档,说明测试用例和预期结果 - 支持自动化测试和手动测试验证
150 lines
3.8 KiB
Markdown
150 lines
3.8 KiB
Markdown
# API接口测试
|
||
|
||
本目录包含用于测试whaleTown项目API接口的测试脚本。
|
||
|
||
## 测试脚本说明
|
||
|
||
### 1. `simple_api_test.py` - 简化版测试
|
||
快速验证API接口的基本连通性和功能。
|
||
|
||
**使用方法:**
|
||
```bash
|
||
# 使用默认服务器地址
|
||
python tests/api/simple_api_test.py
|
||
|
||
# 使用自定义服务器地址
|
||
python tests/api/simple_api_test.py http://localhost:3000
|
||
```
|
||
|
||
**测试内容:**
|
||
- ✅ 应用状态检查 (`GET /`)
|
||
- ✅ 发送邮箱验证码 (`POST /auth/send-email-verification`)
|
||
- ✅ 用户注册 (`POST /auth/register`)
|
||
- ✅ 用户登录 (`POST /auth/login`)
|
||
- ✅ 无效登录测试
|
||
- ✅ 管理员登录测试
|
||
|
||
### 2. `api_test.py` - 完整版测试
|
||
全面的API接口测试,包括边界条件和错误处理。
|
||
|
||
**使用方法:**
|
||
```bash
|
||
# 基础测试
|
||
python tests/api/api_test.py
|
||
|
||
# 详细日志
|
||
python tests/api/api_test.py --verbose
|
||
|
||
# 自定义参数
|
||
python tests/api/api_test.py --base-url http://localhost:3000 --test-email custom@example.com
|
||
```
|
||
|
||
**测试内容:**
|
||
- 应用状态接口测试
|
||
- 用户认证功能测试
|
||
- 管理员功能测试
|
||
- 用户状态管理测试
|
||
- 错误处理测试
|
||
- 频率限制测试
|
||
|
||
## 测试结果示例
|
||
|
||
### 成功的测试输出
|
||
```
|
||
[18:28:55] 🚀 开始基础API测试...
|
||
[18:28:55] 测试目标: https://whaletownend.xinghangee.icu
|
||
[18:28:55] ✅ 应用状态检查
|
||
[18:28:55] 状态码: 200
|
||
[18:28:55] 响应: Pixel Game Server is running!
|
||
[18:28:55] ✅ 发送邮箱验证码
|
||
[18:28:55] 状态码: 200
|
||
[18:28:55] 📧 获取到验证码: 046189
|
||
[18:28:55] ✅ 用户注册
|
||
[18:28:55] 状态码: 201
|
||
[18:28:55] 🎯 基础测试完成!
|
||
```
|
||
|
||
### API接口验证结果
|
||
|
||
根据测试结果,以下接口已验证可用:
|
||
|
||
#### ✅ 可用接口
|
||
1. **应用状态** - `GET /`
|
||
- 状态码: 200
|
||
- 响应: "Pixel Game Server is running!"
|
||
|
||
2. **发送邮箱验证码** - `POST /auth/send-email-verification`
|
||
- 状态码: 200
|
||
- 功能: 正常发送验证码
|
||
- 频率限制: 1分钟内限制重复发送
|
||
|
||
3. **用户注册** - `POST /auth/register`
|
||
- 状态码: 201 (成功) / 400 (参数错误)
|
||
- 需要邮箱验证码
|
||
- 支持完整的参数验证
|
||
|
||
4. **用户登录** - `POST /auth/login`
|
||
- 状态码: 200
|
||
- 支持用户名/邮箱登录
|
||
- 正确的错误处理
|
||
|
||
#### ❌ 不可用接口
|
||
1. **管理员登录** - `POST /admin/auth/login`
|
||
- 状态码: 404
|
||
- 错误: "Cannot POST /admin/auth/login"
|
||
- 可能的原因: 路径不正确或功能未实现
|
||
|
||
## 测试发现的问题
|
||
|
||
### 1. 管理员接口路径问题
|
||
- 文档中的 `/admin/auth/login` 返回404
|
||
- 需要确认正确的管理员登录路径
|
||
|
||
### 2. 频率限制功能正常
|
||
- 验证码发送有1分钟的频率限制
|
||
- 错误消息清晰:"请等待 XX 秒后再试"
|
||
|
||
### 3. 参数验证严格
|
||
- 注册时必须提供邮箱验证码
|
||
- 错误消息准确:"提供邮箱时必须提供邮箱验证码"
|
||
|
||
## 建议的测试流程
|
||
|
||
### 开发环境测试
|
||
1. 运行简化版测试验证基本功能
|
||
2. 检查所有接口的连通性
|
||
3. 验证错误处理是否正确
|
||
|
||
### 生产环境测试
|
||
1. 使用完整版测试进行全面验证
|
||
2. 测试所有边界条件
|
||
3. 验证安全功能(频率限制、权限控制)
|
||
|
||
## 扩展测试
|
||
|
||
### 添加新的测试用例
|
||
1. 在对应的测试脚本中添加新的测试方法
|
||
2. 遵循现有的测试模式
|
||
3. 添加适当的错误处理
|
||
|
||
### 自定义测试参数
|
||
```python
|
||
# 修改测试配置
|
||
tester = SimpleAPITester("http://your-server.com")
|
||
tester.run_basic_tests()
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **频率限制**: 测试时注意API的频率限制,避免被限制
|
||
2. **测试数据**: 使用时间戳生成唯一的测试数据
|
||
3. **网络超时**: 设置合适的请求超时时间
|
||
4. **错误处理**: 测试脚本包含完整的错误处理逻辑
|
||
|
||
## 依赖要求
|
||
|
||
```bash
|
||
pip install requests
|
||
```
|
||
|
||
测试脚本使用Python标准库和requests库,无需额外依赖。 |