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

6.8 KiB
Raw Permalink Blame History

多身份功能 - 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"
}

验证点:

  • 返回成功
  • 再次调用测试1allRoles 应包含 ["parent", "teacher"]
  • hasMultipleRoles 应为 true

错误情况测试:

  1. 重复申请同一身份:
{
  "code": 500,
  "message": "该身份已存在"
}
  1. 无效的身份类型:
{
  "code": 500,
  "message": "无效的角色类型"
}

测试3切换主身份

接口: POST /api/user/roles/switch

请求头:

Authorization: {your_token}

请求参数:

roleType=teacher

预期返回:

{
  "code": 200,
  "data": null,
  "message": "success"
}

验证点:

  • 返回成功
  • 再次调用测试1primaryRole 应为 "teacher"
  • 查询 user 表,user_type 字段应更新为 "teacher"

错误情况测试:

  1. 切换到不存在的身份:
{
  "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"
}

验证点:

  • 返回成功
  • 再次调用测试1allRoles 不应包含 "teacher"

错误情况测试:

  1. 删除主身份:
{
  "code": 500,
  "message": "不能删除主身份"
}
  1. 删除不存在的身份:
{
  "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登录后查看身份

  1. 打开微信开发者工具
  2. 登录账号
  3. 进入"我的"页面
  4. 查看是否显示当前身份

预期:

  • 显示"当前身份:家长"

测试2申请新身份

  1. 点击"申请其他身份"按钮
  2. 选择"陪伴员"
  3. 点击"提交申请"

预期:

  • 显示"申请成功"提示
  • 返回上一页后,显示"切换身份"选项
  • 身份列表包含"家长"和"陪伴员"

测试3切换身份

  1. 点击"陪伴员"身份
  2. 确认切换

预期:

  • 显示"切换成功"提示
  • 页面刷新,显示"当前身份:陪伴员"
  • 首页显示陪伴员相关功能

测试通过标准

后端测试

  • 所有API接口返回正确
  • 错误情况处理正确
  • 数据库数据一致性正确

前端测试

  • 登录后能看到所有身份
  • 申请新身份功能正常
  • 切换身份功能正常
  • 页面刷新后状态保持

兼容性测试

  • 单身份用户正常使用
  • 多身份用户正常使用
  • 现有功能不受影响

🐛 常见问题

问题1API返回401未授权

原因: Token未传递或已过期
解决: 重新登录获取新Token

问题2申请身份失败

原因: 身份类型无效或已存在
解决: 检查 roleType 参数是否正确

问题3切换身份后页面没有刷新

原因: 前端缓存问题
解决: 清除缓存重新编译


📊 测试报告模板

测试时间2026-02-28
测试人员:江鑫杰
测试环境:开发环境

【后端测试】
✅ 获取用户所有身份 - 通过
✅ 申请新身份 - 通过
✅ 切换主身份 - 通过
✅ 检查是否拥有角色 - 通过
✅ 删除角色 - 通过

【前端测试】
✅ 登录后查看身份 - 通过
✅ 申请新身份 - 通过
✅ 切换身份 - 通过

【数据库验证】
✅ user_roles 表数据正确
✅ 数据一致性检查通过

【兼容性测试】
✅ 单身份用户正常使用
✅ 多身份用户正常使用
✅ 现有功能不受影响

测试结论:✅ 全部通过