项目与补贴 — 项目 — 测试用例
依据:项目与补贴-项目功能需求.md、项目与补贴-项目技术方案.md
接口 Base Path(示例):/policy/projectSubsidy;鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;封面上传白名单 jpg/jpeg/png(≤10MB)。执行状态:1 未开始、2 进行中、3 已完成。自动推算(草稿 §1.1,manual_complete_flag=0):T<S→1;T=E→3;S≤T<E→2;T>E→2(超期不自动完成)。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTXM-UT-001 |
状态推算 |
T<开始日 |
单元测试 |
JUnit5 |
§2.2 |
无 |
resolveExecStatus(S=明天,E=后天,T=今天,flag=0) |
返回 1(未开始) |
| ZCZX-BTXM-UT-002 |
状态推算 |
进行中区间 |
单元测试 |
JUnit5 |
§2.2 |
无 |
S=昨天,E=明天,T=今天 |
返回 2(进行中) |
| ZCZX-BTXM-UT-003 |
状态推算 |
T=预计完成日 |
单元测试 |
JUnit5 |
§1.1 |
无 |
S=上月,E=今天,T=今天 |
返回 3(已完成) |
| ZCZX-BTXM-UT-003A |
状态推算 |
T>预计完成日 |
单元测试 |
JUnit5 |
§2.2 超期 |
无 |
S=上月,E=昨天,T=今天 |
返回 2(进行中),非 3 |
| ZCZX-BTXM-UT-004 |
状态推算 |
手工锁定不降级 |
单元测试 |
JUnit5 |
manual_flag=1 |
flag=1,日期改回进行中区间 |
调用推算 |
不修改 exec_status(仍为 3) |
| ZCZX-BTXM-UT-005 |
状态推算 |
手工完成必填实际日 |
单元测试 |
JUnit5 |
§2.2 |
无 |
用户提交 execStatus=3 且无 actualEndDate |
校验失败 |
| ZCZX-BTXM-UT-006 |
参数校验 |
项目名称长度 |
单元测试 |
JUnit5 |
1~20 |
无 |
空、1 字、20 字、21 字 |
空/21 失败;1~20 通过 |
| ZCZX-BTXM-UT-007 |
参数校验 |
简介字数 |
单元测试 |
JUnit5 |
≤50 选填 |
无 |
null/空通过;51 字失败 |
符合 §5.1 |
| ZCZX-BTXM-UT-008 |
参数校验 |
投资金额 |
单元测试 |
JUnit5 |
>0 |
无 |
0、-1、0.01、三位小数 |
非法失败;合法通过 |
| ZCZX-BTXM-UT-009 |
参数校验 |
计划日期先后 |
单元测试 |
JUnit5 |
E≥S |
无 |
planned<start |
失败;planned=start 通过 |
| ZCZX-BTXM-UT-010 |
参数校验 |
实际完成日 |
单元测试 |
JUnit5 |
≤当天 |
无 |
明天、今天 |
明天失败;今天通过 |
| ZCZX-BTXM-UT-011 |
查询校验 |
开始日区间 |
单元测试 |
JUnit5 |
§5.2 |
无 |
start>end / 合法区间 |
非法失败;合法通过 |
| ZCZX-BTXM-UT-012 |
Service |
保存后推算写库 |
单元测试 |
JUnit5+Mockito |
新增 |
flag=0,日期落入进行中 |
insert 前调用 resolver |
库中 exec_status=2 |
| ZCZX-BTXM-UT-013 |
Service |
手工完成写 flag |
单元测试 |
JUnit5+Mockito |
§3.3.1 |
提交 execStatus=3+actualEndDate |
save |
manual_complete_flag=1;actual_end_date 有值 |
| ZCZX-BTXM-UT-014 |
Service |
列表查询刷新状态 |
单元测试 |
JUnit5+Mockito |
§1 |
库中 flag=0,日期已跨期 |
selectList 组装 VO |
展示态为推算后状态(宜同步写库) |
| ZCZX-BTXM-UT-015 |
Service |
删除清封面 |
单元测试 |
JUnit5+Mockito |
§5.4 |
有 cover_file_path |
deleteByIds |
Mock 验证 deleteFile(path) |
| ZCZX-BTXM-UT-016 |
Service |
换封面删旧 |
单元测试 |
JUnit5+Mockito |
§5.3 |
旧 path 已知 |
update 换新 path |
删除旧 path 文件 |
| ZCZX-BTXM-UT-017 |
附件校验 |
封面后缀 |
单元测试 |
JUnit5 |
白名单 |
无 |
.jpg 通过;.exe 失败 |
与需求一致 |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTXM-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman/curl |
§5.2 |
已登录;有多条项目 |
GET /industryPolicy/subsidyProject/list |
≤20 条;projectStartDate 倒序 |
| ZCZX-BTXM-API-002 |
列表 |
关键字-名称 |
接口测试 |
Postman |
模糊 |
已登录 |
keyword= 命中名称片段 |
返回含该名称行 |
| ZCZX-BTXM-API-003 |
列表 |
关键字-简介 |
接口测试 |
Postman |
OR |
简介含词、名称不含 |
同上 keyword |
仍命中 |
| ZCZX-BTXM-API-004 |
列表 |
执行状态筛选 |
接口测试 |
Postman |
精确 |
已登录 |
execStatus=2 |
均为进行中 |
| ZCZX-BTXM-API-005 |
列表 |
开始日闭区间 |
接口测试 |
Postman |
§5.2 |
已知开始日样本 |
startDate+endDate |
仅区间内 |
| ZCZX-BTXM-API-006 |
列表 |
区间非法 |
接口测试 |
Postman |
异常 |
已登录 |
start>end |
失败;可读 msg |
| ZCZX-BTXM-API-007 |
列表 |
查询刷新状态 |
接口测试 |
Postman |
§2.2 |
库中项目 S/E 使今天应为进行中且库仍为 1 |
GET list |
返回 execStatus=2(或已同步写库) |
| ZCZX-BTXM-API-008 |
新增 |
合法全字段 |
接口测试 |
Postman |
正常 |
已登录;已上传封面 |
POST Body 合法 |
成功;字段落库 |
| ZCZX-BTXM-API-009 |
新增 |
自动推算-未开始 |
接口测试 |
Postman |
§2.2 |
已登录 |
开始日=明天,预计=下月,execStatus 随意 |
保存后 execStatus=1 |
| ZCZX-BTXM-API-010 |
新增 |
自动推算-进行中 |
接口测试 |
Postman |
§2.2 |
已登录 |
开始=昨天,预计=明天 |
保存后 execStatus=2 |
| ZCZX-BTXM-API-011 |
新增 |
自动推算-已完成 |
接口测试 |
Postman |
§1.1 T=E |
已登录 |
开始=上月,预计=今天 |
保存后 execStatus=3;actualEndDate 默认今天 |
| ZCZX-BTXM-API-011A |
新增 |
超期不自动完成 |
接口测试 |
Postman |
T>E |
已登录 |
开始=上月,预计=昨天 |
保存后 execStatus=2(仍为进行中) |
| ZCZX-BTXM-API-012 |
新增 |
手工已完成 |
接口测试 |
Postman |
§2.2 |
进行中日期段 |
execStatus=3+actualEndDate=今天 |
成功;manual_complete_flag=1 |
| ZCZX-BTXM-API-013 |
新增 |
已完成缺实际日 |
接口测试 |
Postman |
异常 |
已登录 |
execStatus=3 无 actualEndDate |
失败 |
| ZCZX-BTXM-API-014 |
新增 |
项目名/金额非法 |
接口测试 |
Postman |
校验 |
已登录 |
名空/金额 0/预计<开始 |
分别失败 |
| ZCZX-BTXM-API-015 |
详情 |
有效 id |
接口测试 |
Postman |
§5.5 |
已登录 |
GET .../subsidyProject/{id} |
含状态、封面、审计字段 |
| ZCZX-BTXM-API-016 |
详情 |
无效 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在 id |
404 或业务失败 |
| ZCZX-BTXM-API-017 |
修改 |
合法修改 |
接口测试 |
Postman |
§5.3 |
已登录 |
PUT 改投资金额 |
成功;详情已更新 |
| ZCZX-BTXM-API-018 |
修改 |
已完成锁定不降级 |
接口测试 |
Postman |
§2.2 |
记录 flag=1、status=3 |
改预计完成为未来,PUT |
execStatus 仍为 3 |
| ZCZX-BTXM-API-019 |
修改 |
改状态清锁定 |
接口测试 |
Postman |
可选规则 |
flag=1 记录 |
execStatus 改为 2 保存 |
manual_complete_flag=0;重新可推算 |
| ZCZX-BTXM-API-020 |
修改 |
替换封面 |
接口测试 |
Postman |
§5.3 |
有旧封面 |
PUT 换新 cover |
成功;旧文件不可访问(抽查) |
| ZCZX-BTXM-API-021 |
删除 |
单条删除 |
接口测试 |
Postman |
§5.4 |
已登录 |
DELETE .../{id} |
成功;详情 404 |
| ZCZX-BTXM-API-022 |
删除 |
批量删除 |
接口测试 |
Postman |
批量 |
已登录 |
DELETE id1,id2 |
均不可查 |
| ZCZX-BTXM-API-023 |
端到端 |
CRUD+状态 |
接口测试 |
Postman |
§4 |
已登录 |
新增(进行中)→列表→详情→改→删 |
状态与矩阵一致 |
| ZCZX-BTXM-API-024 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET list |
401 或统一未登录 |
| ZCZX-BTXM-API-025 |
权限 |
无写权限 |
接口测试 |
Postman |
越权 |
仅 list |
POST |
无权限失败 |
| ZCZX-BTXM-API-026 |
响应 |
失败可读 |
接口测试 |
Postman |
§7 |
已登录 |
触发计划日倒置等 |
code+可区分 msg |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome')。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTXM-UI-001 |
列表 |
默认分页排序 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已登录;数据>20 |
进入「项目与补贴-项目」 |
每页 20;开始日新在前 |
| ZCZX-BTXM-UI-002 |
列表 |
关键字查询 |
UI 测试 |
Playwright+Chrome |
模糊 |
有样本 |
输入 keyword→查询 |
命中名称或简介 |
| ZCZX-BTXM-UI-003 |
列表 |
执行状态筛选 |
UI 测试 |
Playwright+Chrome |
精确 |
多状态数据 |
选「进行中」→查询 |
状态列均为进行中 |
| ZCZX-BTXM-UI-004 |
列表 |
开始日范围 |
UI 测试 |
Playwright+Chrome |
闭区间 |
已知样本 |
选 start/end→查询 |
仅区间内 |
| ZCZX-BTXM-UI-005 |
列表 |
区间非法提示 |
UI 测试 |
Playwright+Chrome |
异常 |
已登录 |
start>end→查询 |
Message 提示;不刷新错误数据 |
| ZCZX-BTXM-UI-006 |
列表 |
重置条件 |
UI 测试 |
Playwright+Chrome |
恢复 |
已筛选 |
重置 |
条件清空 |
| ZCZX-BTXM-UI-007 |
新增 |
合法提交含封面 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已登录 |
填必填+上传 jpg→保存 |
成功;列表可见 |
| ZCZX-BTXM-UI-008 |
新增 |
简介选填 |
UI 测试 |
Playwright+Chrome |
选填 |
已登录 |
简介空、无封面,其余合法→保存 |
成功 |
| ZCZX-BTXM-UI-009 |
新增 |
名称/金额非法 |
UI 测试 |
Playwright+Chrome |
校验 |
已登录 |
名空或金额 0→提交 |
校验失败 |
| ZCZX-BTXM-UI-010 |
新增 |
预计早于开始 |
UI 测试 |
Playwright+Chrome |
E≥S |
已登录 |
预计<开始→提交 |
校验失败 |
| ZCZX-BTXM-UI-011 |
新增 |
手工已完成 |
UI 测试 |
Playwright+Chrome |
§2.2 |
日期段可为进行中 |
选「已完成」→须填实际完成日→保存 |
成功;详情有实际完成日 |
| ZCZX-BTXM-UI-012 |
新增 |
已完成无实际日 |
UI 测试 |
Playwright+Chrome |
异常 |
已登录 |
选已完成不填实际日→提交 |
校验失败 |
| ZCZX-BTXM-UI-013 |
新增 |
封面非法 |
UI 测试 |
Playwright+Chrome |
§5.1 |
准备 .bmp |
上传→提交 |
拒绝或错误提示 |
| ZCZX-BTXM-UI-014 |
新增 |
保存后状态-进行中 |
UI 集成 |
Playwright+Chrome |
T<E |
开始=昨天预计=明天 |
保存后看列表 |
显示「进行中」 |
| ZCZX-BTXM-UI-014A |
新增 |
保存后状态-已完成 |
UI 集成 |
Playwright+Chrome |
T=E |
开始=上月预计=今天 |
保存后看列表 |
显示「已完成」 |
| ZCZX-BTXM-UI-014B |
新增 |
超期仍为进行中 |
UI 集成 |
Playwright+Chrome |
T>E |
开始=上月预计=昨天 |
保存后看列表 |
显示「进行中」非已完成 |
| ZCZX-BTXM-UI-015 |
详情 |
字段完整 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意记录 |
查看 |
各字段+封面+状态齐全 |
| ZCZX-BTXM-UI-016 |
修改 |
编辑成功 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑改投资金额→保存 |
列表已更新 |
| ZCZX-BTXM-UI-017 |
修改 |
替换封面 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有封面 |
换图保存 |
详情为新图 |
| ZCZX-BTXM-UI-018 |
修改 |
已完成锁定(可选) |
UI 集成 |
Playwright+Chrome |
不降级 |
已手工完成项目 |
改预计为未来→保存 |
状态仍为已完成 |
| ZCZX-BTXM-UI-019 |
删除 |
单条确认删除 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有记录 |
删除→确认 |
行消失 |
| ZCZX-BTXM-UI-020 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
确认框 |
有记录 |
删除→取消 |
仍在 |
| ZCZX-BTXM-UI-021 |
删除 |
批量删除 |
UI 测试 |
Playwright+Chrome |
批量 |
勾选多条 |
批量删→确认 |
选中均消失 |
| ZCZX-BTXM-UI-022 |
删除 |
删后封面失效 |
UI 测试 |
Playwright+Chrome |
清文件 |
删前复制封面 URL |
删除后打开 URL |
不可访问 |
| ZCZX-BTXM-UI-023 |
端到端 |
CRUD 串联 |
UI 集成 |
Playwright+Chrome |
§4 |
可新增 |
新增→查→看→改→删 |
全流程通过 |
| ZCZX-BTXM-UI-024 |
权限 |
只读账号 |
UI 测试 |
Playwright+Chrome |
§8 |
无写权限 |
登录进模块 |
无新增/编辑/删除 |
| ZCZX-BTXM-UI-025 |
表单 |
选已完成显示实际日 |
UI 测试 |
Playwright+Chrome |
联动 |
新增弹窗 |
执行状态选「已完成」 |
「实际完成日期」表单项必填/显示 |
Playwright 与谷歌浏览器(实施提示)
playwright.config.ts:use: { channel: 'chrome', locale: 'zh-CN' };storageState 复用登录态。
- 路由:
page.goto('/policy/subsidyProject')(以菜单为准)。
- 日期:准备「昨天/明天」用
new Date() 在脚本中格式化。
- 状态选项:
getByRole('option', { name: /进行中|未开始|已完成/ })。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-012~014 |
API-001~012、015、017、021~023 |
UI-001~008、014~017、019、023 |
| 异常流程 |
UT-005、008~011 |
API-006、013~014、016、025~026 |
UI-005、009~013、020 |
| 业务约束/状态机 |
UT-001~005、003A、013 |
API-007、009~012、011A、018~019 |
UI-011~012、014~014B、018、025 |
| 封面/删除 |
UT-015~017 |
API-020、021~022 |
UI-007、013、017、022 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §2.2 状态推算 |
T=E 完成、T>E 超期、手工锁定 |
UT-001~005、003、003A、012~014;API-007、009~013、011、011A、018;UI-011~012、014~014B、018、025 |
| §5.1 新增 |
字段校验、封面 |
UT-006~010、017;API-008、014;UI-007~013 |
| §5.2 列表 |
关键字、状态、日期区间 |
API-001~006;UI-001~006 |
| §5.3 修改 |
全字段、换封面、锁定 |
UT-016;API-017~020;UI-016~018 |
| §5.4 删除 |
删封面 |
UT-015;API-021~022;UI-019~022 |
| §5.5 详情 |
状态刷新展示 |
API-015;UI-015 |
| §6 权限 |
四操作 |
API-024~025;UI-024 |
| §7 错误 |
code/msg |
API-026 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 17、接口 26、UI 25;含状态推算/手工锁定/封面;Playwright+Chrome;Base /industryPolicy/subsidyProject |
| 1.1 |
同步草稿 §1.1:已完成仅 T=E;新增 UT/API/UI 超期 T>E 仍为进行中用例 |
| 1.2 |
草稿 §6 发布/下架:见下表补充用例(发布状态 0/1) |
补充用例(草稿 §6 发布/下架)
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTXM-UT-018 |
状态机 |
编辑守卫 |
单元测试 |
JUnit5 |
矩阵 |
无 |
canEdit(publish=0/1) |
0→true,1→false |
| ZCZX-BTXM-API-027 |
发布 |
未发布成功 |
接口测试 |
Postman |
§5.6 |
publish=0 |
POST .../publish/{id} |
publish=1;publishTime 有值 |
| ZCZX-BTXM-API-028 |
修改 |
已发布拒绝 |
接口测试 |
Postman |
矩阵 |
publish=1 |
PUT |
失败;数据不变 |
| ZCZX-BTXM-API-029 |
下架 |
已发布成功 |
接口测试 |
Postman |
§5.6 |
publish=1 |
POST .../offline/{id} |
publish=0;offlineTime 有值 |
| ZCZX-BTXM-UI-026 |
列表 |
发布下架按钮 |
UI 测试 |
Playwright+Chrome |
矩阵 |
两种状态各有数据 |
切换行看操作列 |
未发布有发布;已发布有下架 |