检疫站管理 — 测试用例
依据:检疫站管理功能需求.md、检疫站管理技术方案.md
接口 Base Path:/livestock/quarantineStation;鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块权限的账号已登录(livestock:quarantineStation:list|query|add|edit|remove)。biz_quarantine_station 宜预置(del_flag=0):
| 样本 |
名称 |
运营状态 |
要点 |
| Q1 |
巴青县检疫站 |
正常(1) |
有照片;负责人「张三」 |
| Q2 |
碾压检疫站 |
停业(2) |
无照片 |
| Q3 |
测试注销站 |
注销(3) |
名称模糊/状态筛选用 |
合法新增 Body 示例:stationName=巴青东站,detailAddress=西藏那曲市巴青县某某路1号,personInCharge=李四,contactPhone=13800138000,operateStatus=1;照片先 /common/upload 再带 photoFileUrl、photoFilePath。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-JYZGL-UT-001 |
参数校验 |
检疫站名称 |
单元测试 |
JUnit5 |
§3.5 |
无 |
空、11 字、10 字 trim |
空/超长失败;合法通过 |
| ZCZX-JYZGL-UT-002 |
参数校验 |
详细地址 |
单元测试 |
JUnit5 |
§3.5 |
无 |
空、201 字、200 字 |
空/超长失败;200 通过 |
| ZCZX-JYZGL-UT-003 |
参数校验 |
负责人 |
单元测试 |
JUnit5 |
§3.5 |
无 |
空、11 字、10 字 |
空/超长失败;通过 |
| ZCZX-JYZGL-UT-004 |
参数校验 |
手机号 |
单元测试 |
JUnit5 |
§3.5 |
无 |
10 位、11 位合法、非法 |
非法失败;合法通过 |
| ZCZX-JYZGL-UT-005 |
参数校验 |
运营状态 |
单元测试 |
JUnit5 |
§2.3 |
无 |
0、4、1/2/3 |
非法失败;1~3 通过 |
| ZCZX-JYZGL-UT-006 |
唯一性 |
名称重复 |
单元测试 |
JUnit5+Mockito |
§3.5 |
已有 Q1 名 |
validateUniqueName |
失败 |
| ZCZX-JYZGL-UT-007 |
参数校验 |
照片成对 |
单元测试 |
JUnit5 |
§3.4 |
无 |
仅 url 无 path、均空、均填 |
仅 url 失败;均空/成对通过 |
| ZCZX-JYZGL-UT-008 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
正常 |
Mock Mapper |
insert 合法行 |
del_flag=0;operate_status=1 默认 |
| ZCZX-JYZGL-UT-009 |
Service |
逻辑删除 |
单元测试 |
JUnit5+Mockito |
§3.5 |
Mock |
remove(id) |
del_flag=2 |
| ZCZX-JYZGL-UT-010 |
Service |
删除有关联 |
单元测试 |
JUnit5+Mockito |
§3.5 |
hasReference=true |
remove |
抛 ServiceException |
| ZCZX-JYZGL-UT-011 |
Service |
删记录清照片 |
单元测试 |
JUnit5+Mockito |
§3.4 |
有 photo_path |
remove |
调用文件删除 |
| ZCZX-JYZGL-UT-012 |
Mapper |
名称模糊 SQL |
单元测试 |
JUnit5 |
§3.6 |
无 |
检查 XML |
station_name LIKE CONCAT('%',…,'%') |
| ZCZX-JYZGL-UT-013 |
Mapper |
状态精确 SQL |
单元测试 |
JUnit5 |
§3.6 |
无 |
检查 XML |
operate_status = #{operateStatus} |
| ZCZX-JYZGL-UT-014 |
Mapper |
列表排序 |
单元测试 |
JUnit5 |
§3.1 |
无 |
检查 XML |
create_time DESC, id DESC |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-JYZGL-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman |
§3.1 |
有 Q1~Q3 |
GET /list |
code=200;含 operateStatusName;时间倒序 |
| ZCZX-JYZGL-API-002 |
列表 |
名称模糊 |
接口测试 |
Postman |
§2.6 |
有 Q1 |
stationName=检疫 |
含 Q1 |
| ZCZX-JYZGL-API-003 |
列表 |
状态精确 |
接口测试 |
Postman |
§2.6 |
有 Q2 停业 |
operateStatus=2 |
仅含停业行 |
| ZCZX-JYZGL-API-004 |
列表 |
组合筛选 |
接口测试 |
Postman |
§2.6 |
已登录 |
stationName=测试+operateStatus=3 |
同时满足 |
| ZCZX-JYZGL-API-005 |
列表 |
模糊无匹配 |
接口测试 |
Postman |
§2.6 |
已登录 |
stationName=不存在xyz |
rows 为空 |
| ZCZX-JYZGL-API-006 |
列表 |
不含已删除 |
接口测试 |
Postman |
逻辑删除 |
id 已删 |
GET /list |
无该 id |
| ZCZX-JYZGL-API-007 |
新增 |
完整含照片 |
接口测试 |
Postman |
§5.1 |
已上传图片 |
POST 合法 Body+照片字段 |
code=200 |
| ZCZX-JYZGL-API-008 |
新增 |
无照片默认正常 |
接口测试 |
Postman |
§5.1 |
已登录 |
POST 无照片字段 |
成功;operateStatus=1 |
| ZCZX-JYZGL-API-009 |
新增 |
缺必填 |
接口测试 |
Postman |
§5.1.4 |
已登录 |
缺 stationName 或手机 |
失败 |
| ZCZX-JYZGL-API-010 |
新增 |
名称超长 |
接口测试 |
Postman |
§5.1 |
已登录 |
stationName 11 字 |
失败 |
| ZCZX-JYZGL-API-011 |
新增 |
名称重复 |
接口测试 |
Postman |
§5.1.4 |
已有 Q1 名 |
POST 同名 |
失败 |
| ZCZX-JYZGL-API-012 |
新增 |
手机号非法 |
接口测试 |
Postman |
§2.4 |
已登录 |
contactPhone=123 |
失败 |
| ZCZX-JYZGL-API-013 |
新增 |
状态非法 |
接口测试 |
Postman |
§3.5 |
已登录 |
operateStatus=9 |
失败 |
| ZCZX-JYZGL-API-014 |
详情 |
有效 id |
接口测试 |
Postman |
§5.4 |
有 Q1 |
GET /{id} |
含全字段及照片 URL |
| ZCZX-JYZGL-API-015 |
详情 |
无效/已删 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在/已删 |
失败或空 data |
| ZCZX-JYZGL-API-016 |
修改 |
改地址负责人 |
接口测试 |
Postman |
§5.3 |
有 Q2 |
PUT 改 detailAddress |
成功 |
| ZCZX-JYZGL-API-017 |
修改 |
改运营状态 |
接口测试 |
Postman |
§5.3 |
Q1 正常 |
PUT operateStatus=2 |
详情为停业 |
| ZCZX-JYZGL-API-018 |
修改 |
换照片 |
接口测试 |
Postman |
§3.4 |
Q2 无图 |
PUT 新 url/path |
成功;旧文件已删 |
| ZCZX-JYZGL-API-019 |
修改 |
不存在 id |
接口测试 |
Postman |
异常 |
已登录 |
伪造 id PUT |
失败 |
| ZCZX-JYZGL-API-020 |
删除 |
单条逻辑删 |
接口测试 |
Postman |
§5.5 |
无关联新行 |
DELETE /{id} |
成功;列表无 |
| ZCZX-JYZGL-API-021 |
删除 |
有关联拒绝 |
接口测试 |
Postman |
§5.5 |
预置有关联 |
DELETE |
失败 |
| ZCZX-JYZGL-API-022 |
删除 |
重复删除 |
接口测试 |
Postman |
幂等 |
已删 id |
再次 DELETE |
失败或不存在 |
| ZCZX-JYZGL-API-023 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§4 |
已登录 |
POST→list→GET→PUT→DELETE |
每步 code=200 |
| ZCZX-JYZGL-API-024 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET /list |
401 或统一未登录 |
| ZCZX-JYZGL-API-025 |
权限 |
无新增权限 |
接口测试 |
Postman |
§6 |
仅 list |
POST |
无权限失败 |
| ZCZX-JYZGL-API-026 |
权限 |
无删除权限 |
接口测试 |
Postman |
§6 |
无 remove |
DELETE |
无权限失败 |
| ZCZX-JYZGL-API-027 |
响应 |
失败可读 |
接口测试 |
Postman |
§8 |
已登录 |
触发重复名、手机错、缺地址 |
msg 可区分 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-JYZGL-UI-001 |
列表 |
默认展示 |
UI 测试 |
Playwright+Chrome |
§5.2.3 |
已登录;有数据 |
进入「检疫站管理」 |
含名称、地址、负责人、电话、状态、操作;无地图标点 |
| ZCZX-JYZGL-UI-002 |
列表 |
名称模糊筛选 |
UI 测试 |
Playwright+Chrome |
§2.6 |
有 Q1 |
名称填「检疫」→搜索 |
含 Q1 |
| ZCZX-JYZGL-UI-003 |
列表 |
状态筛选 |
UI 测试 |
Playwright+Chrome |
§2.6 |
有 Q2 停业 |
运营状态选「停业」→搜索 |
仅停业行 |
| ZCZX-JYZGL-UI-004 |
列表 |
重置 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已筛选 |
搜索→重置 |
条件清空 |
| ZCZX-JYZGL-UI-005 |
新增 |
必填与默认状态 |
UI 测试 |
Playwright+Chrome |
§5.1 |
有 add |
新增→填必填→确定 |
成功;运营状态默认「正常」 |
| ZCZX-JYZGL-UI-006 |
新增 |
上传照片 |
UI 测试 |
Playwright+Chrome |
§2.3 |
有合法 jpg≤10M |
新增→上传照片→保存 |
列表/详情可见图 |
| ZCZX-JYZGL-UI-007 |
新增 |
缺必填校验 |
UI 测试 |
Playwright+Chrome |
§5.1.4 |
新增 |
留空名称或手机→确定 |
校验失败 |
| ZCZX-JYZGL-UI-008 |
新增 |
名称超 10 字 |
UI 测试 |
Playwright+Chrome |
§5.1 |
新增 |
名称超 10 字 |
无法输入或保存失败 |
| ZCZX-JYZGL-UI-009 |
新增 |
取消 |
UI 测试 |
Playwright+Chrome |
§5.1.3 |
新增 |
填一半→取消 |
无新行 |
| ZCZX-JYZGL-UI-010 |
详情 |
只读含照片 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有 Q1 |
查看 |
只读;照片可预览;含审计 |
| ZCZX-JYZGL-UI-011 |
编辑 |
改运营状态 |
UI 测试 |
Playwright+Chrome |
§5.3 |
Q1 正常 |
改「停业」→保存 |
列表显示停业 |
| ZCZX-JYZGL-UI-012 |
编辑 |
更换照片 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有图站点 |
编辑→换图→保存 |
详情为新图 |
| ZCZX-JYZGL-UI-013 |
删除 |
确认删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
无关联行 |
删除→确认 |
行消失 |
| ZCZX-JYZGL-UI-014 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意行 |
删除→取消 |
行仍在 |
| ZCZX-JYZGL-UI-015 |
端到端 |
全流程 |
UI 集成 |
Playwright+Chrome |
§4 |
权限齐备 |
新增→名/状态筛选→看→改→删 |
无报错 |
| ZCZX-JYZGL-UI-016 |
权限 |
只读角色 |
UI 测试 |
Playwright+Chrome |
§6 |
仅 list/query |
进入模块 |
无新增/编辑/删除 |
| ZCZX-JYZGL-UI-017 |
详情 |
从详情编辑 |
UI 测试 |
Playwright+Chrome |
§5.4 |
查看 Q1 |
点「编辑」 |
进入编辑弹窗 |
| ZCZX-JYZGL-UI-018 |
列表 |
地图标点不做 |
UI 测试 |
Playwright+Chrome |
§5.6 |
有数据行 |
查看操作列 |
无「地图标点」或置灰暂未开放 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chrome。
- 配置:
use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用登录态。
- 路由:
page.goto('/livestock/quarantineStation')(以菜单 component 为准)。
- 筛选:
page.getByLabel('检疫站名称').fill('检疫');page.getByLabel('运营状态').click() 后选选项。
- 上传:在新增弹窗内选择
input[type=file] 或组件封装的上传按钮,限制 image/jpeg、image/png。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-008 |
API-007~008、014、016~018、023 |
UI-005~006、010~012、015 |
| 异常流程 |
UT-001~005 |
API-009~013、015、019、021~022 |
UI-007~009、013~014 |
| 业务约束 |
UT-006~007 |
API-002~005、011、017 |
UI-002~004、008 |
| 运营状态 |
UT-005 |
API-003、013、017 |
UI-003、005、011 |
| 照片 |
UT-007、011 |
API-007~008、018 |
UI-006、010、012 |
| 逻辑删除 |
UT-009 |
API-006、020~022 |
UI-013 |
| 地图不做 |
— |
— |
UI-001、018 |
| 权限/鉴权 |
— |
API-024~026 |
UI-016 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 新增 |
字段、照片、默认正常 |
UT-001~008;API-007~013;UI-005~009 |
| §5.2 列表 |
名称模糊+状态精确 |
UT-012~013;API-001~006;UI-001~004 |
| §5.3 修改 |
全字段可改 |
API-016~019;UI-011~012、017 |
| §5.4 详情 |
只读 |
API-014~015;UI-010、017 |
| §5.5 删除 |
逻辑删 |
UT-009~011;API-020~022;UI-013~014 |
| §2.2 运营状态 |
三档 |
UT-005;API-003、017;UI-003、011 |
| §5.6 地图 |
本期不做 |
UI-001、018 |
| §6 权限 |
按钮级 |
API-024~026;UI-016 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 14、接口 27、UI 18;覆盖 CRUD、双维筛选、照片、运营状态;无地图标点;Playwright+Chrome;前缀 ZCZX-JYZGL |