# 疫情上报 — 测试用例 > 依据:`疫情上报功能需求.md`、`疫情上报技术方案.md` > **接口 Base Path(示例)**:`/diseaseDetection/epidemicReport`;若含 `context-path` 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。 **通用前置(无特殊说明)**:具备本模块菜单与按钮权限的账号已登录。**枚举**:传播途径/疫病类型 `1~4`,风险等级 `1~3`(见技术方案 §2.3)。**处置状态**:`release_date` 为空=未解除(`relieveStatus=0`);非空=已解除(`relieveStatus=1`)。**解除日期**仅能通过「解除」接口写入,且须 **≥ 上报日期**。 **界面(UI)测试**:借助 **Playwright** 启动 **Chromium**(与 **Google Chrome 同源内核**);可配置 `channel: 'chrome'` 调用本机已安装的谷歌浏览器。 --- ## 一、单元测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | YQSB-UT-001 | 参数校验 | 传播途径枚举 | 单元测试 | JUnit5 | 1~4 | 无 | 传 1、4、0、5 | 1、4 通过;0、5 失败 | | YQSB-UT-002 | 参数校验 | 疫病类型枚举 | 单元测试 | JUnit5 | 1~4 | 无 | 传 1、4、9 | 1、4 通过;9 失败 | | YQSB-UT-003 | 参数校验 | 风险等级枚举 | 单元测试 | JUnit5 | 1~3 | 无 | 传 1、3、4 | 1、3 通过;4 失败 | | YQSB-UT-004 | 参数校验 | 上报日期格式 | 单元测试 | JUnit5 | YYYY-MM-DD | 无 | `2026-05-01` 通过;`20260501`、空 失败 | 与 §3.4 一致 | | YQSB-UT-005 | 参数校验 | 涉疫轨迹长度 | 单元测试 | JUnit5 | 1~500 字 | 无 | 空串、1 字、501 字 | 空/超长失败;合法通过 | | YQSB-UT-006 | 参数校验 | 疫病名称长度 | 单元测试 | JUnit5 | 1~50 字 | 无 | 空、51 字 | 失败;1~50 通过 | | YQSB-UT-007 | 解除校验 | 解除不早于上报 | 单元测试 | JUnit5 | §5.6 | 上报日 `2026-05-10` | 解除日 `2026-05-09` / `2026-05-10` | 早于失败;等于或晚于通过 | | YQSB-UT-008 | 状态守卫 | 可编辑判定 | 单元测试 | JUnit5 | 未解除可改 | `release_date=null` / 非空 | `canEdit(entity)` | 前者 true;后者 false | | YQSB-UT-009 | 状态守卫 | 可解除判定 | 单元测试 | JUnit5 | §5.6 | 同上 | `canRelieve(entity)` | 前者 true;后者 false | | YQSB-UT-010 | Service | 新增不写解除日 | 单元测试 | JUnit5+Mockito | §3.3.1 | 合法 Body 含 `releaseDate` | `insert` 前清洗字段 | 落库 `release_date` 为 NULL | | YQSB-UT-011 | Service | 解除更新日期 | 单元测试 | JUnit5+Mockito | relieve | 未解除记录 id=1 | `relieve(1, 2026-06-01)` | `release_date` 更新;`relieveStatus=1` | | YQSB-UT-012 | Service | 已解除禁止修改 | 单元测试 | JUnit5+Mockito | §5.3 | 已解除记录 | `update(...)` | 抛业务异常或返回失败 | | YQSB-UT-013 | Service | 重复解除 | 单元测试 | JUnit5+Mockito | §5.6 | 已解除记录 | 再次 `relieve` | 失败 | | YQSB-UT-014 | Service | 列表筛选 SQL | 单元测试 | JUnit5 | §3.1.1 | 无 | `transmissionRoute=2`、`riskLevel=1` | XML 含精确条件 | | YQSB-UT-015 | Service | 列表排序 | 单元测试 | JUnit5 | 技术方案 | 无 | 检查 ORDER BY | `report_date DESC`, `create_time DESC` | | YQSB-UT-016 | 派生字段 | relieveStatus | 单元测试 | JUnit5 | 0/1 | release 空/非空 | `toVo(entity)` | 0 或 1 与日期一致 | --- ## 二、接口测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | YQSB-API-001 | 列表 | 默认分页排序 | 接口测试 | Postman/curl | §5.2 | 已登录;有多条 | `GET .../epidemicReport/list` | `rows`≤20;`reportDate` 倒序 | | YQSB-API-002 | 列表 | 传播途径筛选 | 接口测试 | Postman | 精确 | 含途径 1、2 各一条 | `transmissionRoute=2` | 仅途径 2 | | YQSB-API-003 | 列表 | 风险等级筛选 | 接口测试 | Postman | 精确 | 含高、中危 | `riskLevel=1` | 仅高危 | | YQSB-API-004 | 列表 | 处置状态筛选 | 接口测试 | Postman | relieveStatus | 含未解除、已解除 | `relieveStatus=0` / `1` | 分别仅对应状态 | | YQSB-API-005 | 新增 | 合法全字段 | 接口测试 | Postman | §5.1 | 已登录 | `POST` 全部必填合法(枚举 1~4/1~3) | 成功;`releaseDate` 为空;`relieveStatus=0` | | YQSB-API-006 | 新增 | 非法枚举 | 接口测试 | Postman | §3.4 | 已登录 | `transmissionRoute=9` | 失败 | | YQSB-API-007 | 新增 | 必填缺失 | 接口测试 | Postman | 必填 | 已登录 | 缺 `epidemicName` | 失败 | | YQSB-API-008 | 新增 | 轨迹超长 | 接口测试 | Postman | 500 字 | 已登录 | `affectedLocationTrack` 501 字 | 失败 | | YQSB-API-009 | 新增 | 携带解除日被忽略 | 接口测试 | Postman | §3.3.1 | 已登录 | `POST` 带 `releaseDate` | 成功;详情 `releaseDate` 仍空 | | YQSB-API-010 | 详情 | 有效 id | 接口测试 | Postman | §5.5 | 已登录 | `GET .../epidemicReport/{id}` | 含业务字段与 `relieveStatus` | | YQSB-API-011 | 详情 | 无效 id | 接口测试 | Postman | 异常 | 已登录 | 不存在 id | 404 或业务失败 | | YQSB-API-012 | 修改 | 未解除合法修改 | 接口测试 | Postman | §5.3 | 未解除记录 | `PUT` 改 `epidemicName`、途径等 | 成功;详情已更新 | | YQSB-API-013 | 修改 | 已解除禁止修改 | 接口测试 | Postman | §5.3 | 已解除记录 | `PUT` 任意字段 | 失败;数据不变 | | YQSB-API-014 | 修改 | 不可带解除日 | 接口测试 | Postman | §3.3.1 | 未解除 | `PUT` 带 `releaseDate` | 忽略或失败;不以修改写入解除 | | YQSB-API-015 | 解除 | 合法解除 | 接口测试 | Postman | §5.6 | 未解除;上报 `2026-05-01` | `PUT .../relieve` `releaseDate=2026-05-20` | 成功;`relieveStatus=1` | | YQSB-API-016 | 解除 | 早于上报日 | 接口测试 | Postman | 日期约束 | 未解除;上报 `2026-05-10` | `releaseDate=2026-05-09` | 失败 | | YQSB-API-017 | 解除 | 重复解除 | 接口测试 | Postman | §5.6 | 已解除 | 再次 `PUT .../relieve` | 失败 | | YQSB-API-018 | 删除 | 未解除删除 | 接口测试 | Postman | §5.4 | 已登录 | `DELETE .../{id}` | 成功;详情不可查 | | YQSB-API-019 | 删除 | 已解除删除 | 接口测试 | Postman | §5.4 | 已解除记录 | `DELETE .../{id}` | 成功 | | YQSB-API-020 | 删除 | 批量删除 | 接口测试 | Postman | 批量 | 多条 | `DELETE id1,id2` | 均不可查 | | YQSB-API-021 | 端到端 | 上报至解除 | 接口测试 | Postman | §4 | 已登录 | 新增→列表→详情→改→解除→再改/再解除 | 解除前改成功;解除后改/解除失败 | | YQSB-API-022 | 鉴权 | 未登录 | 接口测试 | curl | 安全 | 无 Token | `GET .../list` | 401 或统一未登录 | | YQSB-API-023 | 权限 | 无写权限 | 接口测试 | Postman | 越权 | 仅 list | `POST` / `PUT relieve` | 无权限失败 | | YQSB-API-024 | 响应 | 失败可读 | 接口测试 | Postman | §8 | 已登录 | 触发 API-013、016、017 | `code`、`msg` 可区分 | --- ## 三、界面测试用例(UI) **测试工具**:**Playwright** + **Chromium**(`channel: 'chrome'` 使用本机 **Google Chrome**)。 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | YQSB-UI-001 | 列表 | 默认加载排序 | UI 测试 | Playwright+Chrome | §5.2 | 已登录;有数据 | 进入「疫情上报」 | 分页默认 20;上报日期新在前 | | YQSB-UI-002 | 列表 | 传播途径筛选 | UI 测试 | Playwright+Chrome | 精确 | 含多种途径 | 选「本地扩散」→查询 | 仅对应行 | | YQSB-UI-003 | 列表 | 风险等级筛选 | UI 测试 | Playwright+Chrome | 精确 | 含高/中/低 | 选「高危」→查询 | 仅高危 | | YQSB-UI-004 | 列表 | 重置筛选 | UI 测试 | Playwright+Chrome | 恢复 | 已筛选 | 重置 | 条件清空;显示全部 | | YQSB-UI-005 | 列表 | 未解除操作列 | UI 测试 | Playwright+Chrome | §6 | 未解除行 | 查看操作列 | 查看、编辑、解除、删除可见(按权限) | | YQSB-UI-006 | 列表 | 已解除操作列 | UI 测试 | Playwright+Chrome | §6 | 已解除行 | 查看操作列 | 仅查看、删除;无编辑、解除 | | YQSB-UI-007 | 新增 | 合法提交 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 新增→填全部字段→确定 | 成功;列表出现;处置「未解除」 | | YQSB-UI-008 | 新增 | 必填校验 | UI 测试 | Playwright+Chrome | 必填 | 已登录 | 漏选传播途径或空轨迹→提交 | 校验失败 | | YQSB-UI-009 | 新增 | 无解除日字段 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 打开新增表单 | 无解除日期录入项 | | YQSB-UI-010 | 编辑 | 未解除修改成功 | UI 测试 | Playwright+Chrome | §5.3 | 未解除行 | 编辑→改疫病名称→保存 | 列表/详情已更新 | | YQSB-UI-011 | 编辑 | 已解除无入口 | UI 测试 | Playwright+Chrome | §5.3 | 已解除行 | 查列表/详情 | 无「编辑」按钮 | | YQSB-UI-012 | 解除 | 弹窗合法解除 | UI 测试 | Playwright+Chrome | §5.6 | 未解除;上报日已知 | 解除→选≥上报日的日期→确认 | 成功;状态已解除;显示解除日 | | YQSB-UI-013 | 解除 | 早于上报日 | UI 测试 | Playwright+Chrome | 日期约束 | 未解除 | 解除日选早于上报日→确认 | 校验失败或提示 | | YQSB-UI-014 | 解除 | 取消确认 | UI 测试 | Playwright+Chrome | 确认框 | 未解除 | 解除→取消 | 仍为未解除 | | YQSB-UI-015 | 解除 | 已解除无按钮 | UI 测试 | Playwright+Chrome | §5.6 | 已解除行 | 查看操作列 | 无「解除」 | | YQSB-UI-016 | 删除 | 单条确认删除 | UI 测试 | Playwright+Chrome | §5.4 | 任意行 | 删除→确认 | 行消失 | | YQSB-UI-017 | 删除 | 批量删除 | UI 测试 | Playwright+Chrome | 批量 | 多条 | 勾选→批量删→确认 | 选中均消失 | | YQSB-UI-018 | 详情 | 字段完整 | UI 测试 | Playwright+Chrome | §5.5 | 任意记录 | 点「查看」 | 含途径、类型、名称、等级、轨迹、处置状态、解除日 | | YQSB-UI-019 | 端到端 | 全流程 | UI 集成 | Playwright+Chrome | §4 | 可新增 | 新增→筛选→编辑→解除→验证不可再编 | 与需求矩阵一致 | | YQSB-UI-020 | 权限 | 只读账号 | UI 测试 | Playwright+Chrome | §9 | 无 add/edit/relieve/remove | 登录进模块 | 无对应按钮或操作拒绝 | | YQSB-UI-021 | 错误提示 | 业务失败可读 | UI 测试 | Playwright+Chrome | §8 | 已登录 | 对已解除点编辑(若可直链)或解除日非法 | Message 含明确原因 | --- ## Playwright 与谷歌浏览器(实施提示) - 安装:`npm i -D @playwright/test`;`npx playwright install chromium`;配置 `use: { channel: 'chrome' }`。 - 导航:`page.getByText('疫情上报')` 或 `goto('/diseaseDetection/epidemicReport')`(以实际路由为准)。 - 筛选:`el-select` 选传播途径/风险等级后点「搜索」。 - 解除:行内「解除」→ 弹窗 `el-date-picker` → 确定;断言行内「已解除」或 `releaseDate` 列有值。 - 操作列:对 `relieveStatus=0` 行 `expect(editBtn).toBeVisible()`;对已解除 `expect(relieveBtn).toHaveCount(0)`。 --- ## 覆盖对照 | 类别 | 单元 UT | 接口 API | 界面 UI | | --- | --- | --- | --- | | 正常流程 | UT-010~011、014~016 | API-001~005、010~012、015、018~021 | UI-001~007、010、012、016~019 | | 异常流程 | UT-001~007、012~013 | API-006~009、011、013、016~017、022~024 | UI-008、013~014、021 | | 业务约束 | UT-008~009、007 | API-004、009、013~017 | UI-005~006、009、011、015 | --- ## 功能需求追溯(自查) | 需求章节 | 要点 | 主要对应用例 | | --- | --- | --- | | §5.1 新增 | 六字段必填、无解除日 | UT-001~006、010;API-005~009;UI-007~009 | | §5.2 列表 | 途径/等级筛选、排序 | UT-014~015;API-001~004;UI-001~004 | | §5.3 修改 | 仅未解除 | UT-008、012;API-012~014;UI-010~011 | | §5.4 删除 | 均可删 | API-018~020;UI-016~017 | | §5.5 详情 | 全字段 | API-010;UI-018 | | §5.6 解除 | 日期、不可重复 | UT-007、009、011、013;API-015~017;UI-012~015 | | §6 矩阵 | 操作按钮 | UT-008~009;API-013、017;UI-005~006、011、015 | | §8 错误 | code/msg | API-024;UI-021 | --- ## 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:单元 16、接口 24、UI 21;处置状态由 release_date 推导;Playwright+Chrome;Base `/diseaseDetection/epidemicReport` |