疫情上报 — 测试用例
依据:疫情上报功能需求.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 |