草场使用记录 — 测试用例
依据:草场使用记录功能需求.md、草场使用记录技术方案.md
接口 Base Path(示例):/dataModel/grasslandUsage;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;库中已有有效草场(biz_grassland,del_flag=0,如总面积 100 亩)与养殖主体(biz_pasture,del_flag=0)。放牧方式:1 轮牧、2 自由放牧、3 季节性放牧。
合法 Body 示例:grasslandId/pastureId 为有效主键;usageAreaMu=50;useStartDate=2025-06-01、useEndDate=2025-06-03 → 服务端 actualUseDays=3;grazingHeadCount=100;grazingMethod=1。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-CCSYJL-UT-001 |
参数校验 |
使用面积 |
单元测试 |
JUnit5 |
>0 且 ≤草场总面积 |
草场 area_mu=100 |
usageAreaMu 为 50、0、101、null |
50 通过;0/101/null 失败 |
| ZCZX-CCSYJL-UT-002 |
参数校验 |
使用日期区间 |
单元测试 |
JUnit5 |
§2.5 |
无 |
开始晚于结束;缺一端;同日合法 |
颠倒/缺一端失败;06-01~06-01 通过 |
| ZCZX-CCSYJL-UT-003 |
天数计算 |
实际使用天数 |
单元测试 |
JUnit5 |
含起止日 |
无 |
resolveActualUseDays(06-01,06-01)→1;(06-01,06-03)→3 |
与技术方案 §3.4 一致 |
| ZCZX-CCSYJL-UT-004 |
参数校验 |
放牧数量 |
单元测试 |
JUnit5 |
≥1 整数 |
无 |
0、负数、1、100 |
0/负失败;正整数通过 |
| ZCZX-CCSYJL-UT-005 |
参数校验 |
放牧方式枚举 |
单元测试 |
JUnit5 |
1~3 |
无 |
值为 1/3 通过;0、4、null 失败 |
与技术方案 §2.2 一致 |
| ZCZX-CCSYJL-UT-006 |
参数校验 |
主数据 id |
单元测试 |
JUnit5 |
非空 |
无 |
grasslandId/pastureId 为 null |
失败 |
| ZCZX-CCSYJL-UT-007 |
列表查询 |
创建日期区间 |
单元测试 |
JUnit5 |
预约日期筛选 |
无 |
validateDateRangeForList:12-01>06-01;单端;合法区间 |
颠倒失败;合法通过 |
| ZCZX-CCSYJL-UT-008 |
参数校验 |
全量保存(Mock 主数据) |
单元测试 |
JUnit5 |
validateRowForSave |
Mock 草场/主体有效 |
合法 BizGrasslandUsageRecord |
通过;actualUseDays 已写入 |
| ZCZX-CCSYJL-UT-009 |
参数校验 |
主数据已删除 |
单元测试 |
JUnit5 |
§5.1 |
Mock 草场 del_flag=2 |
validateRowForSave |
失败;提示主数据失效类 |
| ZCZX-CCSYJL-UT-010 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
正常登记 |
Mock 主数据+Mapper |
insert(record) |
del_flag=0;actual_use_days 为计算值 |
| ZCZX-CCSYJL-UT-011 |
Service |
忽略客户端天数 |
单元测试 |
JUnit5+Mockito |
§3.3.1 |
入参 actualUseDays=99 |
insert 日期 06-01~06-03 |
落库 actual_use_days=3 非 99 |
| ZCZX-CCSYJL-UT-012 |
Service |
修改全字段 |
单元测试 |
JUnit5+Mockito |
§5.3 |
已存在 id |
update 换草场/主体/面积/日期/放牧信息 |
成功;重算天数 |
| ZCZX-CCSYJL-UT-013 |
Service |
修改不存在 |
单元测试 |
JUnit5+Mockito |
异常 |
selectById null |
update |
抛 ServiceException |
| ZCZX-CCSYJL-UT-014 |
Service |
逻辑删除 |
单元测试 |
JUnit5+Mockito |
§5.4 |
Mock Mapper |
remove([id], updateBy) |
logicDelete;del_flag=2 |
| ZCZX-CCSYJL-UT-015 |
Service |
列表日期非法 |
单元测试 |
JUnit5+Mockito |
§3.1.1 |
无 |
selectList 且 startDate>endDate |
抛异常;不调 Mapper |
| ZCZX-CCSYJL-UT-016 |
Mapper |
JOIN 与删除过滤 |
单元测试 |
JUnit5 |
技术方案 §3.5 |
无 |
检查 BizGrasslandUsageRecordMapper.xml |
含 biz_grassland/biz_pasture JOIN;del_flag='0';create_time desc |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-CCSYJL-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman/curl |
§5.2 |
已登录;有多条 |
GET /dataModel/grasslandUsage/list |
rows≤20;createTime 新在前;含 grasslandName |
| ZCZX-CCSYJL-API-002 |
列表 |
关键字-草场名称 |
接口测试 |
Postman |
名称模糊 |
已登录 |
keyword= 草场名称片段 |
命中关联草场名含片段的记录 |
| ZCZX-CCSYJL-API-003 |
列表 |
预约日期-创建日区间 |
接口测试 |
Postman |
创建日期 |
有已知 create_time 记录 |
startDate+endDate 闭区间 |
均在区间内 |
| ZCZX-CCSYJL-API-004 |
列表 |
组合查询 |
接口测试 |
Postman |
多条件 |
已登录 |
keyword+startDate+endDate |
同时满足 |
| ZCZX-CCSYJL-API-005 |
列表 |
创建日期区间非法 |
接口测试 |
Postman |
校验 |
已登录 |
startDate=2025-12-01&endDate=2025-01-01 |
失败;msg 可区分 |
| ZCZX-CCSYJL-API-006 |
列表 |
不含已删除 |
接口测试 |
Postman |
逻辑删除 |
已知 id 已删 |
GET list |
列表无该 id |
| ZCZX-CCSYJL-API-007 |
新增 |
合法全字段 |
接口测试 |
Postman |
§5.1 |
有效草场/主体 id |
POST Body 合法 |
成功;详情 actualUseDays 正确 |
| ZCZX-CCSYJL-API-008 |
新增 |
同日使用 |
接口测试 |
Postman |
§2.5 |
已登录 |
useStartDate=useEndDate=2025-06-01 |
成功;actualUseDays=1 |
| ZCZX-CCSYJL-API-009 |
新增 |
三种放牧方式 |
接口测试 |
Postman |
§2.2 |
已登录 |
分别 grazingMethod 1/2/3 各 POST 一条 |
均成功 |
| ZCZX-CCSYJL-API-010 |
新增 |
忽略客户端天数 |
接口测试 |
Postman |
§3.3.1 |
已登录 |
Body 传 actualUseDays=999 且日期 3 天跨度 |
成功;详情天数为 3 非 999 |
| ZCZX-CCSYJL-API-011 |
新增 |
使用面积超限 |
接口测试 |
Postman |
≤草场总面积 |
草场 100 亩 |
usageAreaMu=101 |
失败 |
| ZCZX-CCSYJL-API-012 |
新增 |
使用日期颠倒 |
接口测试 |
Postman |
日期 |
已登录 |
useStartDate>useEndDate |
失败 |
| ZCZX-CCSYJL-API-013 |
新增 |
主数据无效 |
接口测试 |
Postman |
关联 |
草场或主体 id 不存在/已删 |
POST |
失败 |
| ZCZX-CCSYJL-API-014 |
新增 |
放牧数量非法 |
接口测试 |
Postman |
≥1 |
已登录 |
grazingHeadCount=0 |
失败 |
| ZCZX-CCSYJL-API-015 |
新增 |
放牧方式非法 |
接口测试 |
Postman |
1~3 |
已登录 |
grazingMethod=9 |
失败 |
| ZCZX-CCSYJL-API-016 |
新增 |
缺必填关联 id |
接口测试 |
Postman |
必填 |
已登录 |
缺 grasslandId 或 pastureId |
失败 |
| ZCZX-CCSYJL-API-017 |
详情 |
有效 id |
接口测试 |
Postman |
§5.5 |
已登录 |
GET /dataModel/grasslandUsage/{id} |
含名称、面积、主体、日期、天数、放牧信息、审计字段 |
| ZCZX-CCSYJL-API-018 |
详情 |
无效/已删 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在或已删 id |
data 空或业务失败 |
| ZCZX-CCSYJL-API-019 |
修改 |
合法修改 |
接口测试 |
Postman |
§5.3 |
有记录 |
PUT 改面积、日期、放牧数量 |
成功;天数随日期更新 |
| ZCZX-CCSYJL-API-020 |
修改 |
更换草场重校面积 |
接口测试 |
Postman |
§5.3 |
原草场 100 亩 |
PUT 换 50 亩草场且 usageAreaMu=60 |
失败 |
| ZCZX-CCSYJL-API-021 |
修改 |
校验失败 |
接口测试 |
Postman |
全量校验 |
有记录 |
PUT grazingHeadCount=0 |
失败;库不变 |
| ZCZX-CCSYJL-API-022 |
删除 |
单条逻辑删除 |
接口测试 |
Postman |
§5.4 |
已登录 |
DELETE /dataModel/grasslandUsage/{id} |
成功;列表不可见 |
| ZCZX-CCSYJL-API-023 |
删除 |
批量删除 |
接口测试 |
Postman |
批量 |
已登录 |
DELETE id1,id2 |
均不可查 |
| ZCZX-CCSYJL-API-024 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§4 |
主数据齐备 |
POST→list→GET/{id}→PUT→DELETE |
每步成功 |
| ZCZX-CCSYJL-API-025 |
主数据 |
草场下拉复用 |
接口测试 |
Postman |
§3 主数据 |
已登录 |
GET /dataModel/grassland/list?keyword= |
返回有效草场供选择 |
| ZCZX-CCSYJL-API-026 |
主数据 |
主体下拉复用 |
接口测试 |
Postman |
§3 主数据 |
已登录 |
GET /dataModel/pasture/list?keyword= |
返回有效主体供选择 |
| ZCZX-CCSYJL-API-027 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET .../grasslandUsage/list |
401 或统一未登录 |
| ZCZX-CCSYJL-API-028 |
权限 |
无写权限 |
接口测试 |
Postman |
越权 |
仅 list 权限 |
POST .../grasslandUsage |
无权限失败 |
| ZCZX-CCSYJL-API-029 |
响应 |
失败可读 |
接口测试 |
Postman |
§7 |
已登录 |
触发面积超限、日期颠倒、主数据无效 |
code、msg 可区分 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-CCSYJL-UI-001 |
列表 |
默认分页排序 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已登录;数据>20 |
进入「草场使用记录」菜单 |
默认每页 20;创建时间新在前 |
| ZCZX-CCSYJL-UI-002 |
列表 |
关键字-草场名称 |
UI 测试 |
Playwright+Chrome |
名称模糊 |
有样本 |
输入草场名称→搜索 |
表格含匹配行 |
| ZCZX-CCSYJL-UI-003 |
列表 |
预约日期筛选 |
UI 测试 |
Playwright+Chrome |
创建日期 |
有样本 |
选预约日期起止→搜索 |
结果在区间内 |
| ZCZX-CCSYJL-UI-004 |
列表 |
组合与重置 |
UI 测试 |
Playwright+Chrome |
恢复条件 |
已筛选 |
搜索→「重置」 |
条件清空;默认列表 |
| ZCZX-CCSYJL-UI-005 |
列表 |
展示列完整 |
UI 测试 |
Playwright+Chrome |
§5.2 |
有数据 |
查看表头与首行 |
含草场名、面积、主体、起止日、天数、数量、方式、操作 |
| ZCZX-CCSYJL-UI-006 |
新增 |
合法登记 |
UI 测试 |
Playwright+Chrome |
§5.1 |
主数据存在 |
新增→下拉选草场/主体→填面积与日期等→确定 |
成功;列表新行 |
| ZCZX-CCSYJL-UI-007 |
新增 |
下拉模糊搜索 |
UI 测试 |
Playwright+Chrome |
§2.1 |
已登录 |
草场/主体下拉输入关键字 |
选项列表过滤正确 |
| ZCZX-CCSYJL-UI-008 |
新增 |
使用天数自动计算 |
UI 测试 |
Playwright+Chrome |
§2.5 |
新增弹窗 |
改开始/结束日期 |
「实际使用天数」只读且随日期更新(如 3 天) |
| ZCZX-CCSYJL-UI-009 |
新增 |
使用面积上限提示 |
UI 测试 |
Playwright+Chrome |
≤总面积 |
选 100 亩草场 |
使用面积填 101→确定 |
校验失败并提示不超过总面积 |
| ZCZX-CCSYJL-UI-010 |
新增 |
日期颠倒 |
UI 测试 |
Playwright+Chrome |
日期约束 |
已登录 |
结束早于开始→确定 |
校验失败 |
| ZCZX-CCSYJL-UI-011 |
新增 |
未选草场或主体 |
UI 测试 |
Playwright+Chrome |
必选 |
已登录 |
不选下拉直接确定 |
校验失败 |
| ZCZX-CCSYJL-UI-012 |
新增 |
放牧数量/方式非法 |
UI 测试 |
Playwright+Chrome |
必填枚举 |
已登录 |
数量 0 或未选放牧方式→确定 |
校验失败 |
| ZCZX-CCSYJL-UI-013 |
详情 |
字段完整 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意记录 |
点「查看」 |
各业务字段与列表一致 |
| ZCZX-CCSYJL-UI-014 |
修改 |
编辑成功 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑→改使用面积与放牧数量→保存 |
列表/详情已更新 |
| ZCZX-CCSYJL-UI-015 |
修改 |
换草场重算面积校验 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
换更小面积草场且使用面积仍过大→保存 |
校验失败 |
| ZCZX-CCSYJL-UI-016 |
修改 |
改期重算天数 |
UI 测试 |
Playwright+Chrome |
天数联动 |
有记录 |
编辑延长结束日期→保存 |
详情 actualUseDays 增大 |
| ZCZX-CCSYJL-UI-017 |
删除 |
确认删除 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有记录 |
删除→确认 |
列表无该行 |
| ZCZX-CCSYJL-UI-018 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
确认框 |
有记录 |
删除→取消 |
记录仍在 |
| ZCZX-CCSYJL-UI-019 |
删除 |
批量删除 |
UI 测试 |
Playwright+Chrome |
批量 |
勾选多条 |
批量删除→确认 |
选中行消失 |
| ZCZX-CCSYJL-UI-020 |
端到端 |
CRUD 串联 |
UI 集成 |
Playwright+Chrome |
§4 |
主数据齐备 |
新增→搜索→查看→编辑→删除 |
全流程无报错 |
| ZCZX-CCSYJL-UI-021 |
权限 |
只读账号 |
UI 测试 |
Playwright+Chrome |
§6 |
无 add/edit/remove |
进入模块 |
无新增/编辑/删除或拒绝 |
| ZCZX-CCSYJL-UI-022 |
导出 |
导出(可选) |
UI 测试 |
Playwright+Chrome |
技术方案 §4 |
有 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/grasslandUsage')(以菜单 component 为准)。
- 下拉:
page.locator('.el-select').filter({ hasText: '草场名称' }).click() 后 page.getByText('示范草场');支持 fill 关键字过滤。
- 日期:预约日期、使用起止用日期组件或
fill('YYYY-MM-DD')。
- 只读天数:断言
实际使用天数 输入框 disabled 或文案随日期变化。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-003、008、010~012、016 |
API-001~004、007~010、017、019、024~026 |
UI-001~008、013~016、020 |
| 异常流程 |
UT-001~002、006~007、009、013、015 |
API-005、011~016、018、021、027~029 |
UI-009~012、018 |
| 业务约束 |
UT-001、004~006、011 |
API-010~015、020 |
UI-008~012、015~016 |
| 主数据关联 |
UT-006、009 |
API-013、025~026 |
UI-007、011 |
| 天数计算 |
UT-003、011 |
API-008、010 |
UI-008、016 |
| 逻辑删除 |
UT-014、016 |
API-006、022~023 |
UI-017~019 |
| 权限/导出 |
— |
API-027~028 |
UI-021~022 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 新增 |
主数据、面积上限、日期、放牧 |
UT-001~011;API-007~016;UI-006~012 |
| §2.5 天数 |
自动计算、忽略客户端 |
UT-003、011;API-008、010;UI-008、016 |
| §5.2 列表 |
草场名关键字、创建日区间 |
API-001~006;UI-001~005 |
| §5.3 修改 |
全字段、换草场校验 |
UT-012;API-019~021;UI-014~016 |
| §5.4 删除 |
逻辑删除 |
UT-014;API-022~023;UI-017~019 |
| §5.5 详情 |
全字段 |
API-017;UI-013 |
| §6~§7 |
权限、错误提示 |
API-027~029;UI-021 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 16、接口 29、UI 22;对齐功能/技术方案;Playwright+Chrome;编号前缀 ZCZX-CCSYJL |