- 添加 target/ 到 .gitignore - 从 git 暂存区移除已追踪的 target 目录 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.3 KiB
5.3 KiB
课程包三端全链路测试记录
测试日期: 2026-03-13 测试类型: API 全链路功能测试 测试结果: ✅ 全部通过
测试概述
本次测试针对课程包业务从超管端创建到学校端查看、教师端查看课程的完整 API 链路进行功能验证。
测试结果汇总
| 阶段 | 测试项 | 状态 |
|---|---|---|
| 超管端 | 登录功能 | ✅ 通过 |
| 超管端 | 创建课程 | ✅ 通过 |
| 超管端 | 发布课程 | ✅ 通过 |
| 超管端 | 创建套餐 | ✅ 通过 |
| 超管端 | 添加课程到套餐 | ✅ 通过 |
| 超管端 | 提交审核 | ✅ 通过 |
| 超管端 | 审核通过 | ✅ 通过 |
| 超管端 | 发布套餐 | ✅ 通过 |
| 超管端 | 授权给租户 | ✅ 通过 |
| 学校端 | 登录功能 | ✅ 通过 |
| 学校端 | 查看授权套餐 | ✅ 通过 |
| 教师端 | 登录功能 | ✅ 通过 |
| 教师端 | 查看可用课程 | ✅ 通过 |
测试流程
第一阶段:超管端
-
登录 (POST
/api/auth/login)- 请求:
{"role": "admin", "username": "admin", "password": "123456"} - 响应: 200 OK, token 返回成功
- 请求:
-
创建课程 (POST
/api/admin/courses)- 课程 ID: 14
- 课程名称: 测试课程_1773380715
- 状态: draft → published
-
发布课程 (POST
/api/admin/courses/{id}/publish)- 响应: 200 OK
- 课程状态变为 published
-
创建套餐 (POST
/api/v1/admin/packages)- 套餐 ID: 9
- 套餐名称: 全链路测试套餐_1773380715
- 状态: DRAFT
-
添加课程到套餐 (PUT
/api/v1/admin/packages/{id}/courses)- 课程 ID: 14
- 响应: 200 OK
-
提交审核 (POST
/api/v1/admin/packages/{id}/submit)- 响应: 200 OK
- 套餐状态: DRAFT → SUBMITTED
-
审核通过 (POST
/api/v1/admin/packages/{id}/review)- 请求:
{"approved": true, "comment": "自动化测试审核通过"} - 响应: 200 OK
- 套餐状态: SUBMITTED → APPROVED
- 请求:
-
发布套餐 (POST
/api/v1/admin/packages/{id}/publish)- 响应: 200 OK
- 套餐状态: APPROVED → PUBLISHED
-
授权给租户 (POST
/api/v1/admin/packages/{id}/grant)- 租户 ID: 1
- 授权期限: 2027-03-13
- 响应: 200 OK
第二阶段:学校端
-
登录 (POST
/api/auth/login)- 请求:
{"role": "school", "username": "school1", "password": "123456"} - 响应: 200 OK
- 请求:
-
查看授权套餐 (GET
/api/school/packages)- 响应: 200 OK
- 返回租户套餐列表(包含套餐 ID 9)
第三阶段:教师端
-
登录 (POST
/api/auth/login)- 请求:
{"role": "teacher", "username": "teacher1", "password": "123456"} - 响应: 200 OK
- 请求:
-
查看可用课程 (GET
/api/teacher/courses)- 响应: 200 OK
- 返回课程列表(包含课程 ID 14)
Bug 修复记录
Bug 1: 登录 API 路径错误
- 问题: 测试脚本使用
/api/v1/auth/login,实际路径是/api/auth/login - 修复: 更新测试脚本
Bug 2: 角色名称大小写错误
- 问题: 测试脚本使用
"role": "ADMIN",枚举要求小写"admin" - 修复: 更新测试脚本使用小写角色名
Bug 3: 测试账号密码错误
- 问题: 测试脚本使用
123456,数据库初始化为123456 - 修复: 更新测试脚本使用正确密码
Bug 4: 套餐提交审核必须包含课程
- 问题: 提交审核时报错 "套餐必须包含至少一个课程包"
- 修复: 先创建课程,再添加到套餐,然后提交审核
Bug 5: 学校端 API 路径错误
- 问题: 测试脚本使用
/api/v1/school/packages,实际路径是/api/school/packages - 修复: 更新测试脚本
Bug 6: 教师端无法看到系统课程
- 问题:
getCoursePage和getCoursesByTenantId只查询租户自己的课程,不包含系统课程 - 修复: 修改查询条件,同时包含租户课程和系统课程:
wrapper.and(w -> w .eq(Course::getTenantId, tenantId) .or() .eq(Course::getIsSystem, 1) );
Bug 7: 创建系统课程未设置 isSystem 标志
- 问题:
AdminCourseController.createCourse设置了isSystem=1但没有保存到数据库 - 修复: 添加
courseMapper.updateById(course)保存到数据库
Bug 8: 课程需要发布才能被教师端看到
- 问题: 教师端查询条件
status = 'published',新创建的课程状态是draft - 修复: 创建课程后调用发布接口
新增功能
新增授权接口 (超管端)
- 路径:
POST /api/v1/admin/packages/{id}/grant - 功能: 授权套餐给指定租户
- 请求参数:
tenantId: 租户 IDendDate: 授权结束日期pricePaid: 支付金额
- 响应: 200 OK
测试脚本
test_package_full_api.py: 完整套餐 API 测试(包含课程创建)test_three_ends.py: 三端全链路测试
下一步计划
- 前端浏览器测试: 使用 Playwright 进行前端页面的自动化测试
- 备课功能测试: 测试教师端备课、授课功能
- 展播模式测试: 测试课程展播模式
- 数据完整性测试: 测试套餐中所有字段、所有资源的填写和上传
测试结论: 课程包三端 API 全链路测试通过,所有核心功能正常运行。