西藏巴青项目

我的预约(兽医)测试用例.md 20KB

我的预约(兽医)— 测试用例

依据:我的预约(兽医)功能需求.md我的预约(兽医)技术方案.md
接口 Base Path/diseaseTreatment/myAppointment/vet;鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):兽医账号 A 已通过「畜牧医疗资源管理」为兽医 R1resource_type=1account_assigned=1sys_user_id=A)分配账号并绑定角色 100;具备权限 diseaseTreatment:vetMyAppointment:list|query|confirm|reject|completebiz_service_appointment 宜预置:

样本 归属 状态 要点
A0 R1,provider_type=1 待确认 0 可操作确认/拒绝
A1 R1 已确认 1 可操作完成接诊;canComplete=true
A2 R1 已拒绝 2 reject_reason 非空
A3 R1 已取消 3 无确认/拒绝
A4 R1 已完成 4 无评价入口(§3.3)
AX R2(另一兽医) 待确认 0 账号 A 不可见/不可操作
O1 机构 provider_type=2 已预约 5 兽医列表不可见
E1 专家 provider_type=3 待确认 0 兽医列表不可见

拒绝 Body 片段{"rejectReason":"时段冲突无法接诊"}(1~100 字,trim 后计数)。

界面(UI)测试Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome);菜单示例「牧业疫病诊疗服务 → 我的预约(兽医)」。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-WDYYYS-UT-001 参数校验 拒绝理由空/空白 单元测试 JUnit5 §6.4、§9 validateRejectReason(null)""" " 失败;msg 含「请填写拒绝理由」
ZCZX-WDYYYS-UT-002 参数校验 拒绝理由长度 单元测试 JUnit5 §6.4 1 字、100 字、101 字(trim 后) 1~100 通过;101 失败
ZCZX-WDYYYS-UT-003 参数校验 预约日期范围 单元测试 JUnit5 §6.1、§9 startDate 晚于 endDate;相等;合法区间 前者失败;后两者通过
ZCZX-WDYYYS-UT-004 状态规则 可确认/可拒绝 单元测试 JUnit5 §4.1、§7 canConfirmOrReject(0~4) status=0 为 true
ZCZX-WDYYYS-UT-004a 状态规则 可完成接诊 单元测试 JUnit5 §6.5、§7 canCompleteVetOrExpert(0~4) status=1 为 true
ZCZX-WDYYYS-UT-005 状态规则 兽医合法状态集 单元测试 JUnit5 §4.1、技术方案 §2.2 校验 status=5 对兽医模块 非法或映射为空;列表筛选项无「已预约」
ZCZX-WDYYYS-UT-006 状态展示 状态标签解析 单元测试 JUnit5 §6.1 resolveLabel(0)resolveLabel(4) 待确认/已确认/已拒绝/已取消/已完成
ZCZX-WDYYYS-UT-007 范围解析 当前兽医 ID 单元测试 JUnit5+Mockito §2.2、技术方案 §2.4 Mock 用户 A;库有 R1 resolveProviderId(userId) 返回 R1.id
ZCZX-WDYYYS-UT-008 范围解析 未绑定兽医 单元测试 JUnit5+Mockito §9 用户无 biz_medical_resource 绑定 resolveProviderId 返回 null 或 Optional.empty
ZCZX-WDYYYS-UT-009 Service 列表 scope 单元测试 JUnit5+Mockito §6.1 Mock Mapper;有 A0、AX selectList 账号 A 查询条件含 provider_type=1provider_id=R1;仅 A0 等 R1 记录
ZCZX-WDYYYS-UT-010 Service 确认成功 单元测试 JUnit5+Mockito §6.3 Mock A0(status=0) confirm(id) status=1confirm_time 非空
ZCZX-WDYYYS-UT-011 Service 拒绝成功 单元测试 JUnit5+Mockito §6.4 Mock A0 reject(id, reason) status=2reject_reasonreject_time 写入
ZCZX-WDYYYS-UT-012 Service 非待确认确认 单元测试 JUnit5+Mockito §6.3、§4.3 Mock A1 confirm 抛错;msg「当前状态不允许确认接诊」
ZCZX-WDYYYS-UT-013 Service 非待确认拒绝 单元测试 JUnit5+Mockito §6.4 Mock A3 reject 抛错;msg「当前状态不允许拒绝接诊」
ZCZX-WDYYYS-UT-014 Service 越权-他兽医记录 单元测试 JUnit5+Mockito §2.2 账号 A;目标 AX(R2) getById/confirm 失败;msg「无权操作该预约记录」
ZCZX-WDYYYS-UT-015 Service 未绑定无法操作 单元测试 JUnit5+Mockito §9 无 R1 绑定 confirm/reject 失败;msg「未绑定兽医资源,无法操作」
ZCZX-WDYYYS-UT-016 Service 幂等-重复确认 单元测试 JUnit5+Mockito §4.3 A0 已确认后再次 confirm 第二次调用 失败;状态不允许
ZCZX-WDYYYS-UT-017 Service 并发-已取消后确认 单元测试 JUnit5+Mockito §4.3、§9 Mock 读库 status=3 confirm 失败;msg 含已取消或状态不允许
ZCZX-WDYYYS-UT-018 Mapper 列表 SQL 单元测试 JUnit5 §6.1、技术方案 §3.2 审阅 XML 检查 selectList provider_type=1provider_id=;姓名 LIKE;日期区间;status=ORDER BY appoint_date DESC, create_time DESC
ZCZX-WDYYYS-UT-019 Mapper 更新确认/拒绝 单元测试 JUnit5 §6.3~6.4 审阅 XML updateConfirm/updateReject 按 id+provider 条件更新;不写 provider_id 来自前端
ZCZX-WDYYYS-UT-020 Service 完成接诊成功 单元测试 JUnit5+Mockito §6.5 Mock A1 complete(id) status=4update_by 写入
ZCZX-WDYYYS-UT-021 Service 非已确认不可完成 单元测试 JUnit5+Mockito §6.5 Mock A0 complete 失败;msg「当前状态不允许完成接诊」
ZCZX-WDYYYS-UT-022 Mapper 完成接诊 SQL 单元测试 JUnit5 技术方案 §3.2 审阅 XML updateCompleteVetAppointment provider_type=1status=14

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-WDYYYS-API-001 列表 默认分页排序 接口测试 Postman §6.1 账号 A;有多条 R1 样本 GET /list code=200rows≤20;appoint_date 倒序
ZCZX-WDYYYS-API-002 列表 预约人模糊 接口测试 Postman §6.1 A0 预约人含「扎西」 appointeeName=扎 含 A0;不含无关人
ZCZX-WDYYYS-API-003 列表 预约日期区间 接口测试 Postman §6.1 样本日期已知 startDateendDate 含 A0 当天 含 A0;边界日包含
ZCZX-WDYYYS-API-004 列表 状态精确筛选 接口测试 Postman §6.1 有 A2 已拒绝 status=2 均为已拒绝
ZCZX-WDYYYS-API-005 列表 日期区间非法 接口测试 Postman §9 已登录 startDate 晚于 endDate code≠200;msg「结束日期不能早于开始日期」
ZCZX-WDYYYS-API-006 列表 数据隔离-他兽医 接口测试 Postman §2.2 有 AX 账号 A GET /list 无 AX
ZCZX-WDYYYS-API-007 列表 数据隔离-机构/专家 接口测试 Postman §3.5 有 O1、E1 账号 A GET /list 无 O1、E1
ZCZX-WDYYYS-API-008 列表 未绑定兽医 接口测试 Postman §9 无绑定账号登录 GET /list 空列表或 msg「未绑定兽医资源,无法查询预约」
ZCZX-WDYYYS-API-009 列表 禁止传 providerId 接口测试 Postman 技术方案 §4.1 已登录 GET /list?providerId=伪造 仍以服务端 R1 为准;不可查他兽医数据
ZCZX-WDYYYS-API-010 列表 状态 5 非法 接口测试 Postman §4.1 已登录 status=5 参数错误或空结果(以实现为准)
ZCZX-WDYYYS-API-011 详情 有效 id 接口测试 Postman §6.2 有 A0 GET /{id} 含时段、地址、需求、statusLabel
ZCZX-WDYYYS-API-012 详情 已拒绝含理由 接口测试 Postman §6.2 有 A2 GET /{A2.id} rejectReason 非空
ZCZX-WDYYYS-API-013 详情 已完成无评价字段 接口测试 Postman §3.3 有 A4 GET /{A4.id} 无星级/综合评价;无 reviewList 数据
ZCZX-WDYYYS-API-014 详情 越权 id 接口测试 Postman §2.2 有 AX 账号 A GET /{AX.id} 失败或无权
ZCZX-WDYYYS-API-015 确认 待确认成功 接口测试 Postman §6.3 新建或 A0 POST /confirm/{id} code=200;库 status=1
ZCZX-WDYYYS-API-016 确认 已确认禁止 接口测试 Postman §6.3、§7 有 A1 POST /confirm/{A1.id} 失败;msg 不允许确认
ZCZX-WDYYYS-API-017 确认 已取消禁止 接口测试 Postman §4.3、§9 有 A3 POST /confirm/{A3.id} 失败;msg 含取消或不允许
ZCZX-WDYYYS-API-018 确认 幂等重复 接口测试 Postman §4.3 A0 已确认 再次 confirm 失败
ZCZX-WDYYYS-API-019 拒绝 合法理由 接口测试 Postman §6.4 待确认新行 POST /reject/{id} Body 合法 code=200status=2;理由落库
ZCZX-WDYYYS-API-020 拒绝 理由为空 接口测试 Postman §6.4 待确认行 Body {}rejectReason="" 失败;请填写拒绝理由
ZCZX-WDYYYS-API-021 拒绝 理由超长 接口测试 Postman §6.4 待确认行 101 字 失败;不能超过 100 字
ZCZX-WDYYYS-API-022 拒绝 非待确认 接口测试 Postman §6.4 有 A1 POST /reject/{A1.id} 失败;不允许拒绝
ZCZX-WDYYYS-API-023 拒绝 越权 id 接口测试 Postman §2.2 有 AX 账号 A reject AX 失败;无权
ZCZX-WDYYYS-API-024 端到端 确认主流程 接口测试 Postman §8.1 新待确认行 listGETconfirmlist 状态变已确认;操作列有完成接诊
ZCZX-WDYYYS-API-033 完成接诊 已确认成功 接口测试 Postman §6.5 有 A1 POST /complete/{A1.id} code=200;库 status=4
ZCZX-WDYYYS-API-034 完成接诊 待确认禁止 接口测试 Postman §6.5 有 A0 POST /complete/{A0.id} 失败;不允许完成接诊
ZCZX-WDYYYS-API-035 完成接诊 已取消禁止 接口测试 Postman §6.5 有 A3 POST /complete/{A3.id} 失败;含已取消或不允许
ZCZX-WDYYYS-API-036 列表 canComplete 字段 接口测试 Postman §6.1 有 A0、A1 GET /list A1 行 canComplete=true;A0 为 false
ZCZX-WDYYYS-API-037 权限 无 complete 权限 接口测试 Postman §7 无 complete POST /complete/{id} 无权限失败
ZCZX-WDYYYS-API-038 端到端 完成接诊主流程 接口测试 Postman §8.1 A1 completelist 状态已完成;仅查看
ZCZX-WDYYYS-API-025 端到端 拒绝主流程 接口测试 Postman §8.1 新待确认行 rejectGETlist 已拒绝;列表/详情可见拒绝理由
ZCZX-WDYYYS-API-026 端到端 筛选组合 接口测试 Postman §6.1 多样本 appointeeName+日期+status=0 结果同时满足
ZCZX-WDYYYS-API-027 鉴权 未登录 接口测试 curl 安全 无 Token GET /list 401 或未登录
ZCZX-WDYYYS-API-028 权限 无 list 权限 接口测试 Postman §7 无 list 角色 GET /list 无权限失败
ZCZX-WDYYYS-API-029 权限 无 confirm 权限 接口测试 Postman §7 仅 list/query POST /confirm/{id} 无权限失败
ZCZX-WDYYYS-API-030 权限 无 reject 权限 接口测试 Postman §7 仅 list/query POST /reject/{id} 无权限失败
ZCZX-WDYYYS-API-031 本期范围 无评价接口 接口测试 Postman §5.2、§3.3 有 A4 GET .../reviewList/{id} 404 或未实现
ZCZX-WDYYYS-API-032 响应 失败 msg 可读 接口测试 Postman §9 已登录 触发越权、非待确认、空理由 msg 与 §9 语义一致

三、界面测试用例(UI)

测试工具Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-WDYYYS-UI-001 列表 页面与列展示 UI 测试 Playwright+Chrome §6.1 账号 A 登录;有样本 进入「我的预约(兽医)」 列含预约人、日期、时段、电话、地址、需求、状态、拒绝理由、操作
ZCZX-WDYYYS-UI-002 列表 时段格式 UI 测试 Playwright+Chrome §6.1 有 A0 查看时段列 展示 HH:mm~HH:mm
ZCZX-WDYYYS-UI-003 列表 预约人筛选 UI 测试 Playwright+Chrome §6.1 有 A0 填预约人关键字→搜索 含匹配行
ZCZX-WDYYYS-UI-004 列表 日期与状态筛选 UI 测试 Playwright+Chrome §6.1 有 A2 选日期区间+状态「已拒绝」→搜索 仅已拒绝行
ZCZX-WDYYYS-UI-005 列表 日期非法提示 UI 测试 Playwright+Chrome §9 已登录 结束日期早于开始→搜索 提示「结束日期不能早于开始日期」;不发起错误请求或列表不变
ZCZX-WDYYYS-UI-006 列表 重置 UI 测试 Playwright+Chrome §6.1 已筛选 搜索→点「重置」 条件清空;列表恢复
ZCZX-WDYYYS-UI-007 列表 默认分页 UI 测试 Playwright+Chrome §6.1 >20 条 R1 数据 进入列表 每页 20 条;可翻页
ZCZX-WDYYYS-UI-008 操作列 待确认按钮集 UI 测试 Playwright+Chrome §7 有 A0 查看 A0 操作列 有查看、确认接诊、拒绝接诊
ZCZX-WDYYYS-UI-009 操作列 已确认可完成接诊 UI 测试 Playwright+Chrome §7 有 A1 查看 A1 操作列 有查看、完成接诊;无确认/拒绝
ZCZX-WDYYYS-UI-009a 操作列 已取消/已完成仅查看 UI 测试 Playwright+Chrome §7 有 A3/A4 查看操作列 仅有「查看」
ZCZX-WDYYYS-UI-010 操作列 已拒绝展示理由 UI 测试 Playwright+Chrome §6.1 有 A2 查看 A2 行 拒绝理由列有内容;非「—」
ZCZX-WDYYYS-UI-011 详情 只读弹窗全字段 UI 测试 Playwright+Chrome §6.2 有 A0 点击查看 弹窗含预约人、日期、时段、电话、地址、需求、状态;只读
ZCZX-WDYYYS-UI-012 详情 已拒绝显示理由 UI 测试 Playwright+Chrome §6.2 有 A2 查看 A2 详情 展示拒绝理由
ZCZX-WDYYYS-UI-013 详情 已完成无评价区 UI 测试 Playwright+Chrome §3.3、§5.2 有 A4 查看 A4 详情 无星级、综合评价、查看评价按钮
ZCZX-WDYYYS-UI-014 确认 二次确认成功 UI 测试 Playwright+Chrome §6.3 有 A0 确认接诊→确认框「确定」 成功提示;状态变已确认;按钮仅剩查看
ZCZX-WDYYYS-UI-015 确认 取消二次确认 UI 测试 Playwright+Chrome §6.3 有 A0 确认接诊→取消 状态仍为待确认
ZCZX-WDYYYS-UI-016 拒绝 理由必填校验 UI 测试 Playwright+Chrome §6.4 有 A0 拒绝接诊→留空→确定 提示请填写;不提交
ZCZX-WDYYYS-UI-017 拒绝 理由超长校验 UI 测试 Playwright+Chrome §6.4 有 A0 输入 101 字→确定 前端或提交后提示超长
ZCZX-WDYYYS-UI-018 拒绝 合法提交成功 UI 测试 Playwright+Chrome §6.4 新待确认行 填 1~100 字理由→确定 成功;状态已拒绝;列表可见理由
ZCZX-WDYYYS-UI-019 拒绝 关闭弹窗不变态 UI 测试 Playwright+Chrome §6.4 有 A0 打开拒绝弹窗→取消/关闭 仍为待确认
ZCZX-WDYYYS-UI-020 权限 只读角色 UI 测试 Playwright+Chrome §7 仅 list/query 角色 进入页面;待确认行 无确认/拒绝按钮或点击无权限
ZCZX-WDYYYS-UI-021 范围 未绑定账号 UI 测试 Playwright+Chrome §9 无兽医绑定账号 进入菜单或列表 无菜单或列表空;无报错崩溃
ZCZX-WDYYYS-UI-023 完成接诊 二次确认成功 UI 测试 Playwright+Chrome §6.5 有 A1 完成接诊→确定 成功提示;状态变已完成
ZCZX-WDYYYS-UI-024 完成接诊 取消二次确认 UI 测试 Playwright+Chrome §6.5 有 A1 完成接诊→取消 仍为已确认
ZCZX-WDYYYS-UI-025 权限 无 complete 按钮 UI 测试 Playwright+Chrome §7 无 complete 权限 已确认行 无完成接诊或点击无权限
ZCZX-WDYYYS-UI-022 端到端 接单处置流程 UI 集成 Playwright+Chrome §8.1 权限齐备 确认→完成接诊(或另条拒绝) 状态与按钮符合矩阵

四、覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-009~011 API-001~004、011~012、015、019、024~026 UI-001~004、007~008、011~014、018、022
异常/校验 UT-001~003 API-005、010、020~021 UI-005、016~017
状态机/操作矩阵 UT-004~006、012~013、016~017、020~021 API-016~018、022、033~035 UI-008~010、014~015、019、023~024
完成接诊 UT-004a、020~022 API-033~038 UI-009、023~025
数据范围/隔离 UT-007~009、014 API-006~009、014、023 UI-021
拒绝理由约束 UT-001~002 API-019~021 UI-016~019
权限/鉴权 UT-015 API-027~030 UI-020
本期不做(评价) API-013、031 UI-013
三端数据隔离 UT-009 API-007

五、功能需求追溯

需求章节 要点 主要用例
§6.1 列表 范围、筛选、分页、排序、列 API-001~010;UI-001~007
§6.2 详情 只读、拒绝理由、无评价 API-011~013;UI-011~013
§6.3 确认 仅待确认 UT-004、010、012;API-015~018;UI-014~015
§6.4 拒绝 必填理由 1~100 字 UT-001~002、011;API-019~023;UI-016~019
§6.5 完成接诊 仅已确认→已完成 UT-004a、020~022;API-033~038;UI-009、023~025
§4.3 并发幂等 重复操作、已取消 UT-016~017;API-017~018
§2.2 数据范围 仅当前兽医 UT-009、014;API-006~009、014、023;UI-021
§3.3 不做评价 无评价入口/接口 API-013、031;UI-013
§7 权限 按钮级 API-028~030、037;UI-020、025
§9 提示 文案一致 API-005、032;UI-005、016~017

六、Playwright 实施提示

  • 安装:npm i -D @playwright/testnpx playwright install chrome
  • 配置:use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' }storageState 复用兽医账号 A 登录态。
  • 路由:page.goto('/diseaseTreatment/myAppointment/vet')(以菜单 component 为准)。
  • 定位示例:page.getByPlaceholder('请输入预约人')page.getByRole('button', { name: '搜索' })page.getByRole('button', { name: '确认接诊' })page.getByRole('button', { name: '拒绝接诊' })page.getByRole('button', { name: '完成接诊' })page.getByLabel('拒绝理由')
  • 数据准备:先走「畜牧医疗资源管理」为 R1 分配账号,再向 biz_service_appointment 插入 provider_type=1 各状态样本(或通过移动端预约接口造数)。

七、修订记录

版本 说明
1.0 初版:单元 19、接口 32、UI 22;覆盖列表/详情/确认/拒绝、范围隔离、状态机、权限、本期不做评价;Playwright+Chrome
1.1 增补完成接诊:UT-004a/020~022、API-033~038、UI-009/023~025;修正 Base Path;权限含 complete