牧场管理 — 测试用例
依据:牧场管理功能需求.md、牧场管理技术方案.md
接口 Base Path(示例):/dataModel/pasture;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;可先调 POST /common/upload 取得照片 url、fileName(作 photoFilePath)。牧场性质:1 个体、2 企业。经营状态:1 正常、2 停业、3 注销(新建默认 1)。测试数据:合法个体身份证(如 11010519491231002X)、合法企业主体识别号(18 位)、11 位手机号、省/市/县三级选全;照片白名单 jpg/jpeg/png(≤10MB)。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-MCGL-UT-001 |
参数校验 |
牧场名称长度 |
单元测试 |
JUnit5 |
1~10 字 |
无 |
空串、1 字、10 字、21 字 |
空/21 失败;1~10 通过 |
| ZCZX-MCGL-UT-002 |
参数校验 |
简介字数 |
单元测试 |
JUnit5 |
选填≤50 |
无 |
null/空通过;51 字失败 |
符合 §5.1 |
| ZCZX-MCGL-UT-003 |
参数校验 |
牧场性质枚举 |
单元测试 |
JUnit5 |
仅 1~2 |
无 |
pastureNature 为 1/2 通过;0、3、null 失败 |
与 §2.2 一致 |
| ZCZX-MCGL-UT-004 |
参数校验 |
个体身份证 |
单元测试 |
JUnit5 |
§2.3 |
pastureNature=1 |
合法 18 位、17 位、校验位错误 |
仅合法通过;错误提示含「身份证」 |
| ZCZX-MCGL-UT-005 |
参数校验 |
企业主体识别号 |
单元测试 |
JUnit5 |
§2.3 |
pastureNature=2 |
合法 18 位、15 位、含非法字符 |
仅合法通过;错误提示含「主体识别号」类 |
| ZCZX-MCGL-UT-006 |
参数校验 |
联系电话 |
单元测试 |
JUnit5 |
大陆手机号 |
无 |
合法 11 位、10 位、非 1 开头 |
仅合法通过 |
| ZCZX-MCGL-UT-007 |
参数校验 |
所属区域 |
单元测试 |
JUnit5 |
须选至县 |
无 |
缺省/市/县任一 code 或 name |
失败;六级齐全通过 |
| ZCZX-MCGL-UT-008 |
参数校验 |
详细地址/负责人 |
单元测试 |
JUnit5 |
选填上限 |
无 |
地址 51 字、负责人 11 字 |
失败;合法长度通过 |
| ZCZX-MCGL-UT-009 |
参数校验 |
经营状态枚举 |
单元测试 |
JUnit5 |
1~3 |
无 |
bizStatus 为 1/3 通过;0、4 失败 |
与技术方案一致 |
| ZCZX-MCGL-UT-010 |
附件校验 |
照片后缀 |
单元测试 |
JUnit5 |
白名单 |
无 |
.jpg 通过;.exe、.bmp 失败 |
与 §5.1 一致 |
| ZCZX-MCGL-UT-011 |
附件校验 |
照片成对 |
单元测试 |
JUnit5 |
url/path |
无 |
仅 url 无 path;二者齐全或皆空 |
单字段失败;成对/皆空通过 |
| ZCZX-MCGL-UT-012 |
业务默认 |
缺省经营状态 |
单元测试 |
JUnit5 |
新增默认正常 |
无 |
resolveBizStatus(null) 或 insert 未传 |
结果为 1 |
| ZCZX-MCGL-UT-013 |
证件联动 |
性质切换校验 |
单元测试 |
JUnit5 |
§2.3 |
无 |
个体证号+企业性质 / 企业证号+个体性质 |
均失败 |
| ZCZX-MCGL-UT-014 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
正常登记 |
合法实体 |
insert(pasture) |
del_flag=0;biz_status 正确 |
| ZCZX-MCGL-UT-015 |
Service |
修改全字段 |
单元测试 |
JUnit5+Mockito |
§5.3 |
已存在 id |
update 改名称、状态、区划 |
更新成功 |
| ZCZX-MCGL-UT-016 |
Service |
经营状态互改 |
单元测试 |
JUnit5+Mockito |
1↔2↔3 |
原 biz_status=2 |
update 改为 1 或 3 |
成功(默认允许) |
| ZCZX-MCGL-UT-017 |
Service |
逻辑删除 |
单元测试 |
JUnit5+Mockito |
§5.4 |
Mock Mapper |
remove([id]) |
调用 del_flag=2;非物理 DELETE |
| ZCZX-MCGL-UT-018 |
Service |
删除清照片 |
单元测试 |
JUnit5+Mockito |
删文件 |
有 photo_file_path |
remove([id]) |
Mock 验证 deleteFile(path) |
| ZCZX-MCGL-UT-019 |
Service |
换照片删旧 |
单元测试 |
JUnit5+Mockito |
§5.3 |
旧 path 已知 |
update 换新 photoFilePath |
Mock 验证删除旧 path |
| ZCZX-MCGL-UT-020 |
Mapper |
列表排序与删除过滤 |
单元测试 |
JUnit5 |
技术方案 |
无 |
检查 XML:ORDER BY 与 del_flag='0' |
含 create_time desc;列表带 del_flag=0 |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-MCGL-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman/curl |
§5.2 |
已登录;有多条记录 |
GET /dataModel/pasture/list |
rows≤20;createTime 新在前 |
| ZCZX-MCGL-API-002 |
列表 |
关键字-名称 |
接口测试 |
Postman |
名称模糊 |
已登录 |
keyword= 唯一名称片段 |
命中含该片段记录 |
| ZCZX-MCGL-API-003 |
列表 |
性质筛选-个体 |
接口测试 |
Postman |
精确 |
已登录 |
pastureNature=1 |
均为个体 |
| ZCZX-MCGL-API-004 |
列表 |
性质筛选-企业 |
接口测试 |
Postman |
精确 |
已登录 |
pastureNature=2 |
均为企业 |
| ZCZX-MCGL-API-005 |
列表 |
经营状态筛选 |
接口测试 |
Postman |
精确 |
有停业样本 |
bizStatus=2 |
均为停业 |
| ZCZX-MCGL-API-006 |
列表 |
组合查询 |
接口测试 |
Postman |
多条件 |
已登录 |
keyword+pastureNature+bizStatus |
同时满足 |
| ZCZX-MCGL-API-007 |
列表 |
不含已删除 |
接口测试 |
Postman |
逻辑删除 |
已知 id 已删 |
GET list |
列表无该 id |
| ZCZX-MCGL-API-008 |
新增 |
合法全字段 |
接口测试 |
Postman |
§5.1 |
已登录;已上传照片 |
POST Body 合法 |
code 成功;详情字段齐全 |
| ZCZX-MCGL-API-009 |
新增 |
最小必填无照片 |
接口测试 |
Postman |
选填照片 |
已登录 |
POST 必填项齐全、无照片/简介 |
成功;bizStatus 为 1 或入参值 |
| ZCZX-MCGL-API-010 |
新增 |
缺省经营状态 |
接口测试 |
Postman |
默认正常 |
已登录 |
POST 不传 bizStatus |
落库 bizStatus=1 |
| ZCZX-MCGL-API-011 |
新增 |
个体+身份证 |
接口测试 |
Postman |
§2.3 |
已登录 |
pastureNature=1+合法身份证 |
成功 |
| ZCZX-MCGL-API-012 |
新增 |
企业+识别号 |
接口测试 |
Postman |
§2.3 |
已登录 |
pastureNature=2+合法主体号 |
成功 |
| ZCZX-MCGL-API-013 |
新增 |
名称非法 |
接口测试 |
Postman |
1~10 |
已登录 |
名称空/11 字 |
失败;无新记录 |
| ZCZX-MCGL-API-014 |
新增 |
性质非法 |
接口测试 |
Postman |
枚举 |
已登录 |
pastureNature=0 |
失败 |
| ZCZX-MCGL-API-015 |
新增 |
个体证号非法 |
接口测试 |
Postman |
校验 |
已登录 |
pastureNature=1+错误证号 |
失败;msg 可区分 |
| ZCZX-MCGL-API-016 |
新增 |
手机号非法 |
接口测试 |
Postman |
校验 |
已登录 |
10 位手机号 |
失败 |
| ZCZX-MCGL-API-017 |
新增 |
区划未选全 |
接口测试 |
Postman |
至县级 |
已登录 |
缺 countyCode |
失败 |
| ZCZX-MCGL-API-018 |
新增 |
照片仅 url |
接口测试 |
Postman |
成对 |
已登录 |
有 url 无 path |
失败 |
| ZCZX-MCGL-API-019 |
详情 |
有效 id |
接口测试 |
Postman |
§5.5 |
已登录 |
GET /dataModel/pasture/{id} |
含区划、状态、照片及审计字段 |
| ZCZX-MCGL-API-020 |
详情 |
无效/已删 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在或 del_flag=2 的 id |
业务失败或空数据 |
| ZCZX-MCGL-API-021 |
修改 |
合法修改 |
接口测试 |
Postman |
§5.3 |
已登录;有记录 |
PUT 改名称、负责人 |
成功;详情已更新 |
| ZCZX-MCGL-API-022 |
修改 |
性质变更重校证件 |
接口测试 |
Postman |
§2.3 |
个体记录 |
PUT 改 pastureNature=2 且证号仍为身份证 |
失败 |
| ZCZX-MCGL-API-023 |
修改 |
经营状态变更 |
接口测试 |
Postman |
1↔2↔3 |
有记录 |
PUT bizStatus 从 1→3 |
成功 |
| ZCZX-MCGL-API-024 |
修改 |
替换照片 |
接口测试 |
Postman |
删旧 |
有旧照片 path |
PUT 换新 photo 成对 |
成功;旧 URL 不可访问(抽查) |
| ZCZX-MCGL-API-025 |
删除 |
单条逻辑删除 |
接口测试 |
Postman |
§5.4 |
已登录 |
DELETE /dataModel/pasture/{id} |
成功;列表/详情不可见 |
| ZCZX-MCGL-API-026 |
删除 |
批量删除 |
接口测试 |
Postman |
批量 |
已登录 |
DELETE id1,id2 |
均不可查 |
| ZCZX-MCGL-API-027 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§4 |
已登录 |
新增(个体)→列表→详情→改企业证号→删 |
每步成功(改企业须换合法主体号) |
| ZCZX-MCGL-API-028 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET .../list |
401 或统一未登录 |
| ZCZX-MCGL-API-029 |
权限 |
无写权限 |
接口测试 |
Postman |
越权 |
仅 list 权限 |
POST .../pasture |
无权限失败 |
| ZCZX-MCGL-API-030 |
响应 |
失败可读 |
接口测试 |
Postman |
§7 |
已登录 |
触发名称空、证号错等 |
Body 含 code、msg 且可区分 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-MCGL-UI-001 |
列表 |
默认分页排序 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已登录;数据>20 |
进入「牧场管理」菜单 |
默认每页 20;创建时间新在前 |
| ZCZX-MCGL-UI-002 |
列表 |
关键字查询 |
UI 测试 |
Playwright+Chrome |
名称模糊 |
有名称含关键词记录 |
输入牧场名称→搜索 |
表格含该行 |
| ZCZX-MCGL-UI-003 |
列表 |
牧场性质筛选 |
UI 测试 |
Playwright+Chrome |
精确 |
个体/企业均有 |
选「个体」→搜索 |
性质列均为个体 |
| ZCZX-MCGL-UI-004 |
列表 |
经营状态筛选 |
UI 测试 |
Playwright+Chrome |
精确 |
多状态均有 |
选「停业」→搜索 |
状态列均为停业 |
| ZCZX-MCGL-UI-005 |
列表 |
组合与重置 |
UI 测试 |
Playwright+Chrome |
恢复条件 |
已多条件筛选 |
搜索→点「重置」 |
条件清空;恢复默认列表 |
| ZCZX-MCGL-UI-006 |
列表 |
操作列与地图 |
UI 测试 |
Playwright+Chrome |
§5.6 不做 |
有数据行 |
查看操作列 |
有查看/编辑/删除;无地图标点或置灰提示 |
| ZCZX-MCGL-UI-007 |
新增 |
合法全字段 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已登录 |
新增→填必填+选区划至县+上传 jpg→确定 |
成功;列表出现新记录 |
| ZCZX-MCGL-UI-008 |
新增 |
无照片无简介 |
UI 测试 |
Playwright+Chrome |
选填 |
已登录 |
仅必填项→确定 |
成功 |
| ZCZX-MCGL-UI-009 |
新增 |
默认经营状态 |
UI 测试 |
Playwright+Chrome |
默认正常 |
已登录 |
打开新增弹窗 |
经营状态默认「正常」 |
| ZCZX-MCGL-UI-010 |
新增 |
个体与企业证件 |
UI 测试 |
Playwright+Chrome |
§2.3 |
已登录 |
分别选个体/企业并填对应证件→保存 |
均成功;错误证号有区分提示 |
| ZCZX-MCGL-UI-011 |
新增 |
名称空或超长 |
UI 测试 |
Playwright+Chrome |
1~10 |
已登录 |
名称留空或 11 字→确定 |
校验失败 |
| ZCZX-MCGL-UI-012 |
新增 |
区划未选至县 |
UI 测试 |
Playwright+Chrome |
三级 |
已登录 |
仅选省/市→确定 |
提示须选至县级 |
| ZCZX-MCGL-UI-013 |
新增 |
手机号非法 |
UI 测试 |
Playwright+Chrome |
校验 |
已登录 |
填 10 位手机→确定 |
校验失败 |
| ZCZX-MCGL-UI-014 |
新增 |
照片格式非法 |
UI 测试 |
Playwright+Chrome |
§5.1 |
准备 .bmp |
setInputFiles 上传→确定 |
拒绝或明确错误 |
| ZCZX-MCGL-UI-015 |
新增 |
性质切换证件 |
UI 测试 |
Playwright+Chrome |
联动 |
新增弹窗 |
先选个体填身份证→改企业→确定 |
提示重新填写/校验主体号 |
| ZCZX-MCGL-UI-016 |
详情 |
字段完整 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意记录 |
点「查看」 |
名称、性质、证件、区划、地址、负责人、手机、状态、照片齐全 |
| ZCZX-MCGL-UI-017 |
修改 |
编辑成功 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑→改牧场名称→确定 |
列表/详情已更新 |
| ZCZX-MCGL-UI-018 |
修改 |
经营状态变更 |
UI 测试 |
Playwright+Chrome |
状态互改 |
正常记录 |
改为「注销」→保存 |
列表显示注销 |
| ZCZX-MCGL-UI-019 |
修改 |
替换照片 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有照片 |
编辑→换 png→保存 |
详情为新图 |
| ZCZX-MCGL-UI-020 |
删除 |
确认删除 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有记录 |
删除→确认 |
列表无该行 |
| ZCZX-MCGL-UI-021 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
确认框 |
有记录 |
删除→取消 |
记录仍在 |
| ZCZX-MCGL-UI-022 |
删除 |
批量删除 |
UI 测试 |
Playwright+Chrome |
批量 |
勾选多条 |
批量删除→确认 |
选中行均消失 |
| ZCZX-MCGL-UI-023 |
端到端 |
CRUD 串联 |
UI 集成 |
Playwright+Chrome |
§4 |
可新增 |
新增→搜索→查看→编辑→删除 |
全流程无报错 |
| ZCZX-MCGL-UI-024 |
权限 |
只读账号 |
UI 测试 |
Playwright+Chrome |
§6 |
无 add/edit/remove |
登录进模块 |
无新增/编辑/删除或操作拒绝 |
| ZCZX-MCGL-UI-025 |
导出 |
导出(可选) |
UI 测试 |
Playwright+Chrome |
技术方案 |
有 export 权限 |
点「导出」 |
下载 Excel 或成功提示 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chromium;本机 Chrome:npx playwright install chrome。
playwright.config.ts 示例:use: { channel: 'chrome', headless: false, locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用登录态。
- 路由:
page.goto('/dataModel/pasture')(以菜单 component 配置为准)。
- 区划:
page.locator('.el-cascader').click() 后逐级选择省/市/县(按项目组件封装调整)。
- 上传:
page.locator('input[type=file]').setInputFiles('fixtures/pasture.jpg')。
- 确认框:
page.getByRole('button', { name: /确定|确认/ })。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-012~016、020 |
API-001~012、019、021、023~027 |
UI-001~010、016~019、023 |
| 异常流程 |
UT-001~002、008 |
API-013~018、020、029 |
UI-011~014、021 |
| 业务约束 |
UT-003~011、013 |
API-003~005、015~018、022 |
UI-003~004、009~010、012~013、015、018 |
| 逻辑删除/附件 |
UT-017~019、020 |
API-007、024~026 |
UI-019~022 |
| 地图(不做) |
— |
— |
UI-006 |
| 权限/导出 |
— |
API-028~029 |
UI-024~025 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 新增 |
字段、证件联动、照片选填 |
UT-001~013;API-008~018;UI-007~015 |
| §5.2 列表 |
关键字、性质/状态、逻辑删除不可见 |
API-001~007;UI-001~006 |
| §5.3 修改 |
全字段、换图、性质变更 |
UT-015~016、019;API-021~024;UI-017~019 |
| §5.4 删除 |
逻辑删除、确认 |
UT-017~018;API-025~026;UI-020~022 |
| §5.5 详情 |
全字段 |
API-019;UI-016 |
| §5.6 地图 |
本期不做 |
UI-006 |
| §6~§7 |
权限、错误提示 |
API-028~030;UI-024 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 20、接口 30、UI 25;对齐功能/技术方案;Playwright+Chrome;编号前缀 ZCZX-MCGL |