项目与补贴 — 补贴 — 测试用例
依据:项目与补贴-补贴功能需求.md、项目与补贴-补贴技术方案.md
接口 Base Path(示例):/policy/projectSubsidy;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;可先调 POST /common/upload 取得明细附件/封面的 url、fileName(存储路径)、originalFilename(作 detailFileName)。明细附件(必填)白名单:pdf/md/doc/docx/xls/xlsx/ppt/pptx(≤30MB);封面(选填):jpg/jpeg/png(≤10MB)。发放状态:1 申请中、2 已发放。补贴名称:1~20 字符(必填)。
界面(UI)测试:借助 Playwright 启动 Chromium(与 Google Chrome 同源内核);可配置 channel: 'chrome' 调用本机已安装的谷歌浏览器。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTSX-UT-001 |
参数校验 |
补贴名称长度 |
单元测试 |
JUnit5 |
§5.1 1~20 |
无 |
空串、1 字、20 字、21 字 |
空/21 失败;1~20 通过 |
| ZCZX-BTSX-UT-002 |
参数校验 |
简介字数 |
单元测试 |
JUnit5 |
选填≤50 |
无 |
null/空通过;51 字失败 |
符合 §5.1 |
| ZCZX-BTSX-UT-003 |
参数校验 |
发放状态枚举 |
单元测试 |
JUnit5 |
仅 1~2 |
无 |
grantStatus 为 1/2 通过;0、3、null 失败 |
与技术方案 §2.2 一致 |
| ZCZX-BTSX-UT-004 |
附件校验 |
明细后缀白名单 |
单元测试 |
JUnit5 |
§5.1 |
无 |
.pdf、.xlsx 通过;.exe、.zip 失败 |
与需求一致 |
| ZCZX-BTSX-UT-005 |
附件校验 |
封面后缀白名单 |
单元测试 |
JUnit5 |
§5.1 |
无 |
.jpg、.png 通过;.bmp 失败 |
与需求一致 |
| ZCZX-BTSX-UT-006 |
附件校验 |
明细三件套必填 |
单元测试 |
JUnit5 |
url/path/name |
无 |
缺 url 或缺 name;三者齐全 |
前者失败;后者通过 |
| ZCZX-BTSX-UT-007 |
附件校验 |
封面成对 |
单元测试 |
JUnit5 |
可空成对 |
无 |
仅 coverUrl 无 path;二者齐全或皆空 |
单字段失败;成对/皆空通过 |
| ZCZX-BTSX-UT-008 |
业务默认 |
新增缺省发放状态 |
单元测试 |
JUnit5 |
技术方案 §1 |
无 |
resolveGrantStatus(null) 或 insert 未传 |
落库/结果为 1(申请中) |
| ZCZX-BTSX-UT-009 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
§5.1 |
合法实体含明细三件套 |
insert(matter) |
字段与入参一致;grant_status 正确 |
| ZCZX-BTSX-UT-010 |
Service |
修改全字段 |
单元测试 |
JUnit5+Mockito |
§5.3 |
已存在 id |
update 改名称、状态、简介 |
更新成功;update_time 变化 |
| ZCZX-BTSX-UT-011 |
Service |
状态双向变更 |
单元测试 |
JUnit5+Mockito |
§5.3 默认 |
原 grant_status=2 |
update 改为 1 |
成功(默认允许回退) |
| ZCZX-BTSX-UT-012 |
Service |
修改缺明细拒绝 |
单元测试 |
JUnit5+Mockito |
保存约束 |
已存在记录 |
update 清空 detail 三件套 |
校验失败;不写库 |
| ZCZX-BTSX-UT-013 |
Service |
替换明细删旧 |
单元测试 |
JUnit5+Mockito |
§5.3 |
旧 detail_file_path 已知 |
update 换新三件套 |
Mock 验证 deleteFile(旧path) |
| ZCZX-BTSX-UT-014 |
Service |
替换封面删旧 |
单元测试 |
JUnit5+Mockito |
§5.3 |
旧 cover_file_path 已知 |
update 换新封面 |
删除旧 cover path |
| ZCZX-BTSX-UT-015 |
Service |
删除联动清文件 |
单元测试 |
JUnit5+Mockito |
§5.4 |
记录含 detail/cover path |
deleteByIds([id]) |
删库;对两 path 各调 deleteFile |
| ZCZX-BTSX-UT-016 |
Service |
列表排序 SQL |
单元测试 |
JUnit5 |
技术方案 |
无 |
检查列表 ORDER BY |
含 create_time DESC, id DESC |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTSX-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman/curl |
§5.2 |
已登录;有多条不同创建时间 |
GET /industryPolicy/subsidyMatter/list |
rows≤20;createTime 新在前 |
| ZCZX-BTSX-API-002 |
列表 |
关键字-名称 |
接口测试 |
Postman |
模糊 |
已登录 |
keyword= 仅命中名称片段 |
返回含该名称记录 |
| ZCZX-BTSX-API-003 |
列表 |
关键字-简介 |
接口测试 |
Postman |
OR |
简介含词、名称不含 |
同上 keyword |
仍命中 |
| ZCZX-BTSX-API-004 |
列表 |
发放状态-申请中 |
接口测试 |
Postman |
精确 |
已登录 |
grantStatus=1 |
均为申请中 |
| ZCZX-BTSX-API-005 |
列表 |
发放状态-已发放 |
接口测试 |
Postman |
精确 |
已登录 |
grantStatus=2 |
均为已发放 |
| ZCZX-BTSX-API-006 |
列表 |
组合查询 |
接口测试 |
Postman |
多条件 |
已登录 |
keyword+grantStatus |
同时满足 |
| ZCZX-BTSX-API-007 |
新增 |
合法全字段 |
接口测试 |
Postman |
§5.1 |
已登录;已上传明细+封面 |
POST Body 合法 |
code 成功;详情含 detailFileName |
| ZCZX-BTSX-API-008 |
新增 |
最小必填无封面 |
接口测试 |
Postman |
正常 |
已登录;仅上传明细 |
POST 名称+状态+明细三件套,无简介无封面 |
成功;grantStatus 为入参或默认 1 |
| ZCZX-BTSX-API-009 |
新增 |
缺省发放状态 |
接口测试 |
Postman |
默认申请中 |
已登录 |
POST 不传 grantStatus(若接口支持) |
落库 grantStatus=1 |
| ZCZX-BTSX-API-010 |
新增 |
直接已发放 |
接口测试 |
Postman |
§4 补录 |
已登录 |
grantStatus=2+合法明细 |
成功;详情为已发放 |
| ZCZX-BTSX-API-011 |
新增 |
名称非法 |
接口测试 |
Postman |
1~20 |
已登录 |
名称空/21 字 |
失败;无新记录 |
| ZCZX-BTSX-API-012 |
新增 |
简介超长 |
接口测试 |
Postman |
≤50 |
已登录 |
introduction 51 字 |
失败 |
| ZCZX-BTSX-API-013 |
新增 |
发放状态非法 |
接口测试 |
Postman |
枚举 |
已登录 |
grantStatus=0 或 99 |
失败 |
| ZCZX-BTSX-API-014 |
新增 |
缺明细附件 |
接口测试 |
Postman |
必填 |
已登录 |
不传 detail 三件套 |
失败;提示明细类错误 |
| ZCZX-BTSX-API-015 |
新增 |
明细后缀非法 |
接口测试 |
Postman |
白名单 |
已登录 |
detail 指向 .exe 或伪造后缀 |
失败 |
| ZCZX-BTSX-API-016 |
详情 |
有效 id |
接口测试 |
Postman |
§5.5 |
已登录 |
GET .../subsidyMatter/{id} |
含名称、状态、明细名、封面及审计字段 |
| ZCZX-BTSX-API-017 |
详情 |
无效 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在 id |
404 或业务失败 |
| ZCZX-BTSX-API-018 |
修改 |
合法修改 |
接口测试 |
Postman |
§5.3 |
已登录;有记录 |
PUT 改名称、简介 |
成功;详情已更新 |
| ZCZX-BTSX-API-019 |
修改 |
状态 申请中→已发放 |
接口测试 |
Postman |
§4 流转 |
记录 grantStatus=1 |
PUT grantStatus=2 |
成功 |
| ZCZX-BTSX-API-020 |
修改 |
状态 已发放→申请中 |
接口测试 |
Postman |
默认可回退 |
记录 grantStatus=2 |
PUT grantStatus=1 |
成功(未单独约定禁止时) |
| ZCZX-BTSX-API-021 |
修改 |
清空明细拒绝 |
接口测试 |
Postman |
保存约束 |
已登录 |
PUT 去掉 detail 三件套 |
失败;原数据不变 |
| ZCZX-BTSX-API-022 |
修改 |
替换明细附件 |
接口测试 |
Postman |
删旧 |
原 detail path 已知 |
PUT 换新三件套 |
成功;旧文件不可访问(抽查) |
| ZCZX-BTSX-API-023 |
修改 |
替换封面 |
接口测试 |
Postman |
§5.3 |
有旧封面 |
PUT 换新 cover |
成功;旧封面不可访问 |
| ZCZX-BTSX-API-024 |
删除 |
单条-申请中 |
接口测试 |
Postman |
§5.4 |
已登录;grantStatus=1 |
DELETE .../{id} |
成功;详情 404 |
| ZCZX-BTSX-API-025 |
删除 |
单条-已发放 |
接口测试 |
Postman |
默认不限制 |
已登录;grantStatus=2 |
DELETE .../{id} |
成功(默认策略) |
| ZCZX-BTSX-API-026 |
删除 |
批量删除 |
接口测试 |
Postman |
批量 |
已登录;多条 id |
DELETE id1,id2 |
均不可查 |
| ZCZX-BTSX-API-027 |
端到端 |
CRUD+状态流转 |
接口测试 |
Postman |
§4 |
已登录 |
新增(申请中)→列表→详情→改已发放→删 |
每步成功 |
| ZCZX-BTSX-API-028 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET .../list |
401 或统一未登录 |
| ZCZX-BTSX-API-029 |
权限 |
无写权限 |
接口测试 |
Postman |
越权 |
仅 list 权限 |
POST .../subsidyMatter |
无权限失败 |
| ZCZX-BTSX-API-030 |
响应 |
失败可读 |
接口测试 |
Postman |
§7 |
已登录 |
触发缺明细/名称空等 |
Body 含 code、msg 且可区分 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTSX-UI-001 |
列表 |
默认分页排序 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已登录;数据>20 |
进入「项目与补贴-补贴」 |
每页 20;创建时间新在前 |
| ZCZX-BTSX-UI-002 |
列表 |
关键字查询 |
UI 测试 |
Playwright+Chrome |
模糊 OR |
有样本 |
输入 keyword→查询 |
命中名称或简介 |
| ZCZX-BTSX-UI-003 |
列表 |
发放状态筛选 |
UI 测试 |
Playwright+Chrome |
精确 |
两种状态均有 |
选「申请中」→查询 |
状态列均为申请中 |
| ZCZX-BTSX-UI-004 |
列表 |
组合与重置 |
UI 测试 |
Playwright+Chrome |
恢复 |
已筛选 |
keyword+状态→查询→重置 |
重置后条件清空 |
| ZCZX-BTSX-UI-005 |
列表 |
操作按钮 |
UI 测试 |
Playwright+Chrome |
§6 |
有数据行 |
检查操作列 |
查看/编辑/删除按权限显示 |
| ZCZX-BTSX-UI-006 |
列表 |
明细文件名可点 |
UI 测试 |
Playwright+Chrome |
§5.2 |
有附件记录 |
查看列表附件列 |
显示原始文件名;可点击(下载/预览) |
| ZCZX-BTSX-UI-007 |
新增 |
合法全字段 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已登录 |
新增→填名称、选申请中→上传 pdf→上传 jpg 封面→确定 |
成功;列表可见 |
| ZCZX-BTSX-UI-008 |
新增 |
无封面无简介 |
UI 测试 |
Playwright+Chrome |
选填 |
已登录 |
仅名称+状态+明细→保存 |
成功 |
| ZCZX-BTSX-UI-009 |
新增 |
默认申请中 |
UI 测试 |
Playwright+Chrome |
§5.1 默认 |
已登录 |
打开新增弹窗不改状态 |
发放状态默认「申请中」 |
| ZCZX-BTSX-UI-010 |
新增 |
直接已发放 |
UI 测试 |
Playwright+Chrome |
§4 补录 |
已登录 |
选「已发放」+合法明细→保存 |
列表显示已发放 |
| ZCZX-BTSX-UI-011 |
新增 |
名称空或超长 |
UI 测试 |
Playwright+Chrome |
1~20 |
已登录 |
名称空/21 字→提交 |
校验失败 |
| ZCZX-BTSX-UI-012 |
新增 |
未传明细附件 |
UI 测试 |
Playwright+Chrome |
必填 |
已登录 |
不上传明细→提交 |
提示须上传明细附件 |
| ZCZX-BTSX-UI-013 |
新增 |
明细格式非法 |
UI 测试 |
Playwright+Chrome |
白名单 |
准备 .exe |
setInputFiles 上传→提交 |
拒绝或明确错误提示 |
| ZCZX-BTSX-UI-014 |
新增 |
封面格式非法 |
UI 测试 |
Playwright+Chrome |
§5.1 |
准备 .bmp |
上传封面→提交 |
拒绝或错误提示 |
| ZCZX-BTSX-UI-015 |
新增 |
简介超长 |
UI 测试 |
Playwright+Chrome |
≤50 |
已登录 |
简介 51 字→提交 |
校验失败 |
| ZCZX-BTSX-UI-016 |
详情 |
字段完整 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意记录 |
点「查看」 |
名称、简介、状态、明细下载入口、封面、审计信息齐全 |
| ZCZX-BTSX-UI-017 |
详情 |
进入编辑 |
UI 测试 |
Playwright+Chrome |
§5.5 |
有 edit 权限 |
详情页点编辑 |
进入编辑表单且数据回显 |
| ZCZX-BTSX-UI-018 |
修改 |
编辑成功 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑→改名称→保存 |
列表/详情已更新 |
| ZCZX-BTSX-UI-019 |
修改 |
状态变更 |
UI 测试 |
Playwright+Chrome |
1↔2 |
申请中记录 |
改为已发放→保存 |
列表显示已发放 |
| ZCZX-BTSX-UI-020 |
修改 |
替换明细附件 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
重新上传 pdf→保存 |
成功;详情显示新文件名 |
| ZCZX-BTSX-UI-021 |
修改 |
清空明细失败 |
UI 测试 |
Playwright+Chrome |
约束 |
有记录 |
移除已传明细→保存 |
校验失败 |
| ZCZX-BTSX-UI-022 |
删除 |
单条确认 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有记录 |
删除→确认 |
记录消失 |
| ZCZX-BTSX-UI-023 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
确认框 |
有记录 |
删除→取消 |
记录仍在 |
| ZCZX-BTSX-UI-024 |
删除 |
已发放可删 |
UI 测试 |
Playwright+Chrome |
默认策略 |
已发放记录 |
删除→确认 |
成功删除(默认) |
| ZCZX-BTSX-UI-025 |
删除 |
批量删除 |
UI 测试 |
Playwright+Chrome |
批量 |
勾选多条 |
批量删除→确认 |
选中行均消失 |
| ZCZX-BTSX-UI-026 |
端到端 |
CRUD 串联 |
UI 集成 |
Playwright+Chrome |
§4 |
可新增 |
新增→查→看→改状态→删 |
全流程无报错 |
| ZCZX-BTSX-UI-027 |
权限 |
只读账号 |
UI 测试 |
Playwright+Chrome |
§8 |
无 add/edit/remove |
登录进模块 |
无新增/编辑/删除或操作拒绝 |
| ZCZX-BTSX-UI-028 |
导出 |
导出按钮(可选) |
UI 测试 |
Playwright+Chrome |
技术方案 |
有 export 权限 |
点导出 |
下载 Excel 或成功提示 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chromium;本机 Chrome:channel: 'chrome'。
- 登录复用:
storageState: 'auth.json'。
- 路由示例:
page.goto('/policy/subsidyMatter')(以菜单组件路径为准)。
- 上传:
page.locator('input[type=file]').first().setInputFiles('fixtures/sample.pdf')。
- 确认框:
page.getByRole('button', { name: /确定|确认/ }).click()。
- 断言:
expect(page.getByText('申请中')).toBeVisible()。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-008~011、016 |
API-001~010、016~020、022~023、027 |
UI-001~010、016~020、022、026 |
| 异常流程 |
UT-001~002、012 |
API-011~015、017、021、028~030 |
UI-011~015、021、023 |
| 业务约束 |
UT-003~007 |
API-004~005、013~015、019~021、024~025 |
UI-003、009~010、012~014、019、024 |
| 附件/文件 |
UT-004~007、013~015 |
API-007~008、022~023 |
UI-006~008、012~014、020 |
| 权限/导出 |
— |
API-028~029 |
UI-005、027~028 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §2.1 发放状态 |
申请中/已发放、可互改 |
UT-003、011;API-004~005、019~020;UI-003、009~010、019 |
| §5.1 新增 |
名称、明细必填、封面选填、默认申请中 |
UT-001、004~008;API-007~015;UI-007~015 |
| §5.2 列表 |
keyword OR、状态筛选、排序 |
UT-016;API-001~006;UI-001~006 |
| §5.3 修改 |
全字段、明细不可空、换附件删旧 |
UT-010~014;API-018~023;UI-018~021 |
| §5.4 删除 |
确认、清文件、已发放默认可删 |
UT-015;API-024~026;UI-022~025 |
| §5.5 详情 |
全字段、下载入口 |
API-016;UI-016~017 |
| §6~§7 |
权限、code/msg |
API-028~030;UI-027 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 16、接口 30、UI 28;台账 CRUD;明细必填+封面选填;Playwright+Chrome;Base /industryPolicy/subsidyMatter |
| 1.1 |
草稿 §6 发布/下架:见下表补充用例 |
补充用例(草稿 §6 发布/下架)
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTSX-UT-017 |
状态机 |
删除守卫 |
单元测试 |
JUnit5 |
矩阵 |
无 |
canDelete(publish=0/1) |
0→true,1→false |
| ZCZX-BTSX-API-031 |
发布 |
未发布成功 |
接口测试 |
Postman |
§5.6 |
publish=0;明细齐全 |
POST .../publish/{id} |
publish=1 |
| ZCZX-BTSX-API-032 |
修改 |
已发布拒绝 |
接口测试 |
Postman |
矩阵 |
publish=1 |
PUT |
失败 |
| ZCZX-BTSX-API-033 |
下架 |
已发布成功 |
接口测试 |
Postman |
§5.6 |
publish=1 |
POST .../offline/{id} |
publish=0;附件仍在 |
| ZCZX-BTSX-UI-029 |
列表 |
发布下架按钮 |
UI 测试 |
Playwright+Chrome |
矩阵 |
两种状态 |
查看操作列 |
与宣传模块矩阵一致 |