peixue-dev/Archive/[一次性]多身份功能-API测试指南-2026-02-28.md

391 lines
6.8 KiB
Markdown
Raw Permalink Normal View History

2026-02-28 19:07:38 +08:00
# 多身份功能 - API测试指南
> 测试时间2026-02-28
> 测试环境:开发环境
---
## 📋 测试前准备
### 1. 获取测试Token
**登录接口:** `POST /api/auth/login`
```json
{
"phone": "13800138000",
"password": "123456"
}
```
**返回示例:**
```json
{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"userInfo": {
"id": 1,
"phone": "13800138000",
"role": "parent"
}
}
}
```
**保存Token** 后续所有请求都需要在Header中添加
```
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
---
## 🧪 API测试用例
### 测试1获取用户所有身份
**接口:** `GET /api/user/roles/list`
**请求头:**
```
Authorization: {your_token}
```
**预期返回:**
```json
{
"code": 200,
"data": {
"allRoles": ["parent"],
"primaryRole": "parent",
"hasMultipleRoles": false
},
"message": "success"
}
```
**验证点:**
-`allRoles` 包含用户的所有身份
-`primaryRole` 是用户的主身份
-`hasMultipleRoles` 正确反映是否有多个身份
---
### 测试2申请新身份
**接口:** `POST /api/user/roles/apply`
**请求头:**
```
Authorization: {your_token}
```
**请求参数:**
```
roleType=teacher
```
**预期返回:**
```json
{
"code": 200,
"data": null,
"message": "success"
}
```
**验证点:**
- ✅ 返回成功
- ✅ 再次调用测试1`allRoles` 应包含 `["parent", "teacher"]`
-`hasMultipleRoles` 应为 `true`
**错误情况测试:**
1. 重复申请同一身份:
```json
{
"code": 500,
"message": "该身份已存在"
}
```
2. 无效的身份类型:
```json
{
"code": 500,
"message": "无效的角色类型"
}
```
---
### 测试3切换主身份
**接口:** `POST /api/user/roles/switch`
**请求头:**
```
Authorization: {your_token}
```
**请求参数:**
```
roleType=teacher
```
**预期返回:**
```json
{
"code": 200,
"data": null,
"message": "success"
}
```
**验证点:**
- ✅ 返回成功
- ✅ 再次调用测试1`primaryRole` 应为 `"teacher"`
- ✅ 查询 `user` 表,`user_type` 字段应更新为 `"teacher"`
**错误情况测试:**
1. 切换到不存在的身份:
```json
{
"code": 500,
"message": "该身份不存在,请先申请该身份"
}
```
---
### 测试4检查是否拥有某个角色
**接口:** `GET /api/user/roles/has`
**请求头:**
```
Authorization: {your_token}
```
**请求参数:**
```
roleType=teacher
```
**预期返回:**
```json
{
"code": 200,
"data": true,
"message": "success"
}
```
**验证点:**
- ✅ 拥有该角色返回 `true`
- ✅ 不拥有该角色返回 `false`
---
### 测试5删除角色
**接口:** `DELETE /api/user/roles/remove`
**请求头:**
```
Authorization: {your_token}
```
**请求参数:**
```
roleType=teacher
```
**预期返回:**
```json
{
"code": 200,
"data": null,
"message": "success"
}
```
**验证点:**
- ✅ 返回成功
- ✅ 再次调用测试1`allRoles` 不应包含 `"teacher"`
**错误情况测试:**
1. 删除主身份:
```json
{
"code": 500,
"message": "不能删除主身份"
}
```
2. 删除不存在的身份:
```json
{
"code": 500,
"message": "该身份不存在"
}
```
---
## 🔍 数据库验证
### 验证1检查 user_roles 表数据
```sql
-- 查看用户的所有身份
SELECT * FROM user_roles WHERE user_id = 1;
```
**预期结果:**
```
+----+---------+-----------+------------+--------+---------------------+---------------------+
| id | user_id | role_type | is_primary | status | create_time | update_time |
+----+---------+-----------+------------+--------+---------------------+---------------------+
| 1 | 1 | parent | 1 | 1 | 2026-02-28 10:00:00 | 2026-02-28 10:00:00 |
| 2 | 1 | teacher | 0 | 1 | 2026-02-28 10:05:00 | 2026-02-28 10:05:00 |
+----+---------+-----------+------------+--------+---------------------+---------------------+
```
---
### 验证2检查数据一致性
```sql
-- 检查 user.user_type 是否与 user_roles 主身份一致
SELECT
u.id,
u.phone,
u.user_type as user_table_role,
ur.role_type as primary_role,
IF(u.user_type = ur.role_type, '✓ 一致', '✗ 不一致') as consistency
FROM user u
LEFT JOIN user_roles ur ON u.id = ur.user_id AND ur.is_primary = 1
WHERE u.id = 1;
```
**预期结果:**
```
+----+-------------+-----------------+--------------+-------------+
| id | phone | user_table_role | primary_role | consistency |
+----+-------------+-----------------+--------------+-------------+
| 1 | 13800138000 | parent | parent | ✓ 一致 |
+----+-------------+-----------------+--------------+-------------+
```
---
## 📱 前端测试
### 测试1登录后查看身份
1. 打开微信开发者工具
2. 登录账号
3. 进入"我的"页面
4. 查看是否显示当前身份
**预期:**
- 显示"当前身份:家长"
---
### 测试2申请新身份
1. 点击"申请其他身份"按钮
2. 选择"陪伴员"
3. 点击"提交申请"
**预期:**
- 显示"申请成功"提示
- 返回上一页后,显示"切换身份"选项
- 身份列表包含"家长"和"陪伴员"
---
### 测试3切换身份
1. 点击"陪伴员"身份
2. 确认切换
**预期:**
- 显示"切换成功"提示
- 页面刷新,显示"当前身份:陪伴员"
- 首页显示陪伴员相关功能
---
## ✅ 测试通过标准
### 后端测试
- [ ] 所有API接口返回正确
- [ ] 错误情况处理正确
- [ ] 数据库数据一致性正确
### 前端测试
- [ ] 登录后能看到所有身份
- [ ] 申请新身份功能正常
- [ ] 切换身份功能正常
- [ ] 页面刷新后状态保持
### 兼容性测试
- [ ] 单身份用户正常使用
- [ ] 多身份用户正常使用
- [ ] 现有功能不受影响
---
## 🐛 常见问题
### 问题1API返回401未授权
**原因:** Token未传递或已过期
**解决:** 重新登录获取新Token
### 问题2申请身份失败
**原因:** 身份类型无效或已存在
**解决:** 检查 `roleType` 参数是否正确
### 问题3切换身份后页面没有刷新
**原因:** 前端缓存问题
**解决:** 清除缓存重新编译
---
## 📊 测试报告模板
```
测试时间2026-02-28
测试人员:江鑫杰
测试环境:开发环境
【后端测试】
✅ 获取用户所有身份 - 通过
✅ 申请新身份 - 通过
✅ 切换主身份 - 通过
✅ 检查是否拥有角色 - 通过
✅ 删除角色 - 通过
【前端测试】
✅ 登录后查看身份 - 通过
✅ 申请新身份 - 通过
✅ 切换身份 - 通过
【数据库验证】
✅ user_roles 表数据正确
✅ 数据一致性检查通过
【兼容性测试】
✅ 单身份用户正常使用
✅ 多身份用户正常使用
✅ 现有功能不受影响
测试结论:✅ 全部通过
```