6.8 KiB
6.8 KiB
多身份功能 - API测试指南
测试时间:2026-02-28
测试环境:开发环境
📋 测试前准备
1. 获取测试Token
登录接口: POST /api/auth/login
{
"phone": "13800138000",
"password": "123456"
}
返回示例:
{
"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}
预期返回:
{
"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
预期返回:
{
"code": 200,
"data": null,
"message": "success"
}
验证点:
- ✅ 返回成功
- ✅ 再次调用测试1,
allRoles应包含["parent", "teacher"] - ✅
hasMultipleRoles应为true
错误情况测试:
- 重复申请同一身份:
{
"code": 500,
"message": "该身份已存在"
}
- 无效的身份类型:
{
"code": 500,
"message": "无效的角色类型"
}
测试3:切换主身份
接口: POST /api/user/roles/switch
请求头:
Authorization: {your_token}
请求参数:
roleType=teacher
预期返回:
{
"code": 200,
"data": null,
"message": "success"
}
验证点:
- ✅ 返回成功
- ✅ 再次调用测试1,
primaryRole应为"teacher" - ✅ 查询
user表,user_type字段应更新为"teacher"
错误情况测试:
- 切换到不存在的身份:
{
"code": 500,
"message": "该身份不存在,请先申请该身份"
}
测试4:检查是否拥有某个角色
接口: GET /api/user/roles/has
请求头:
Authorization: {your_token}
请求参数:
roleType=teacher
预期返回:
{
"code": 200,
"data": true,
"message": "success"
}
验证点:
- ✅ 拥有该角色返回
true - ✅ 不拥有该角色返回
false
测试5:删除角色
接口: DELETE /api/user/roles/remove
请求头:
Authorization: {your_token}
请求参数:
roleType=teacher
预期返回:
{
"code": 200,
"data": null,
"message": "success"
}
验证点:
- ✅ 返回成功
- ✅ 再次调用测试1,
allRoles不应包含"teacher"
错误情况测试:
- 删除主身份:
{
"code": 500,
"message": "不能删除主身份"
}
- 删除不存在的身份:
{
"code": 500,
"message": "该身份不存在"
}
🔍 数据库验证
验证1:检查 user_roles 表数据
-- 查看用户的所有身份
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:检查数据一致性
-- 检查 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:登录后查看身份
- 打开微信开发者工具
- 登录账号
- 进入"我的"页面
- 查看是否显示当前身份
预期:
- 显示"当前身份:家长"
测试2:申请新身份
- 点击"申请其他身份"按钮
- 选择"陪伴员"
- 点击"提交申请"
预期:
- 显示"申请成功"提示
- 返回上一页后,显示"切换身份"选项
- 身份列表包含"家长"和"陪伴员"
测试3:切换身份
- 点击"陪伴员"身份
- 确认切换
预期:
- 显示"切换成功"提示
- 页面刷新,显示"当前身份:陪伴员"
- 首页显示陪伴员相关功能
✅ 测试通过标准
后端测试
- 所有API接口返回正确
- 错误情况处理正确
- 数据库数据一致性正确
前端测试
- 登录后能看到所有身份
- 申请新身份功能正常
- 切换身份功能正常
- 页面刷新后状态保持
兼容性测试
- 单身份用户正常使用
- 多身份用户正常使用
- 现有功能不受影响
🐛 常见问题
问题1:API返回401未授权
原因: Token未传递或已过期
解决: 重新登录获取新Token
问题2:申请身份失败
原因: 身份类型无效或已存在
解决: 检查 roleType 参数是否正确
问题3:切换身份后页面没有刷新
原因: 前端缓存问题
解决: 清除缓存重新编译
📊 测试报告模板
测试时间:2026-02-28
测试人员:江鑫杰
测试环境:开发环境
【后端测试】
✅ 获取用户所有身份 - 通过
✅ 申请新身份 - 通过
✅ 切换主身份 - 通过
✅ 检查是否拥有角色 - 通过
✅ 删除角色 - 通过
【前端测试】
✅ 登录后查看身份 - 通过
✅ 申请新身份 - 通过
✅ 切换身份 - 通过
【数据库验证】
✅ user_roles 表数据正确
✅ 数据一致性检查通过
【兼容性测试】
✅ 单身份用户正常使用
✅ 多身份用户正常使用
✅ 现有功能不受影响
测试结论:✅ 全部通过