西藏巴青项目

隔离巡查登记测试用例.md 18KB

隔离巡查登记 — 测试用例

依据:隔离巡查登记功能需求.md隔离巡查登记技术方案.md
接口 Base Path/tradeMarket/isolationPatrol;鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块权限的账号已登录(tradeMarket:isolationPatrol:list|query|add|edit|remove)。关联数据宜预置:

类型 样本 要点
圈位 biz_isolation_pen P1 id=1 pen_code=01P2 id=2 02 del_flag=0
入场登记 biz_entry_isolation E1 del_flag=0expected_release_date >= 今天
分圈 biz_entry_isolation_alloc P1:E001,E002;P2:E003 对应 entry_id=E1
已过期在栏(异常样本) E2 expected_release_date < 今天(用于在栏判定负例)

合法新增 Body 示例

  • 正常(数量 0):
{
  "patrolTime": "2026-05-20 14:00:00",
  "penId": 1,
  "sickDeadQty": 0,
  "contentDesc": "巡查结果正常",
  "handleDesc": "无需处理"
}
  • 异常(数量 2):
{
  "patrolTime": "2026-05-20 15:00:00",
  "penId": 1,
  "sickDeadQty": 2,
  "contentDesc": "巡查结果异常",
  "handleDesc": "需要处理",
  "earTagList": ["E001", "E002"]
}

界面(UI)测试Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-GLXCDJ-UT-001 耳标解析 英文逗号拆分 单元测试 JUnit5 §2.5 复用 EarTagCodec.parse("A,B") ["A","B"]
ZCZX-GLXCDJ-UT-002 耳标解析 去重拒绝 单元测试 JUnit5 §2.7 parse("E1,E1") 校验失败或抛异常
ZCZX-GLXCDJ-UT-003 一致性 P1 数量为 0 无耳标 单元测试 JUnit5 §2.8 P1 sickDeadQty=0earTagList=["E1"] 失败
ZCZX-GLXCDJ-UT-004 一致性 P1 数量为 0 通过 单元测试 JUnit5 §2.8 P1 sickDeadQty=0earTagList=[] 通过
ZCZX-GLXCDJ-UT-005 一致性 P2 数量与耳标不等 单元测试 JUnit5 §2.8 P2 sickDeadQty=2,耳标 1 个 失败
ZCZX-GLXCDJ-UT-006 一致性 P2 数量与耳标相等 单元测试 JUnit5 §2.8 P2 sickDeadQty=2,2 个耳标 通过
ZCZX-GLXCDJ-UT-007 一致性 P3 耳标不在栏 单元测试 JUnit5+Mockito §2.8 P3 在栏仅 E001 提交 E009 失败
ZCZX-GLXCDJ-UT-008 一致性 P3 耳标重复 单元测试 JUnit5 §2.8 P3 earTagList=["E1","E1"] 失败
ZCZX-GLXCDJ-UT-009 在栏圈位 过期登记不计入 单元测试 JUnit5+Mockito §2.4 E2 已过期 isPenInStock(penId) false
ZCZX-GLXCDJ-UT-010 在栏圈位 有效登记计入 单元测试 JUnit5+Mockito §2.4 E1 在栏 isPenInStock(1) true
ZCZX-GLXCDJ-UT-011 在栏耳标 合并分圈耳标 单元测试 JUnit5+Mockito §2.4 P1 两行 alloc listEarTags(1) 含 E001、E002 去重
ZCZX-GLXCDJ-UT-012 巡查时间 晚于当前 单元测试 JUnit5 §2.2 patrolTime=明天 失败
ZCZX-GLXCDJ-UT-013 巡查时间 等于当前 单元测试 JUnit5 §2.2 Mock now patrolTime=now 通过
ZCZX-GLXCDJ-UT-014 字段校验 文案长度 单元测试 JUnit5 §2.5/2.6 空、201 字、200 字 空/201 失败;200 通过
ZCZX-GLXCDJ-UT-015 字段校验 病死数量 单元测试 JUnit5 §2.4 -1099、小数 -1/小数失败;0/99 通过
ZCZX-GLXCDJ-UT-016 文件校验 照片后缀 单元测试 JUnit5 §2.9 .exe.png.JPG exe 失败;png/jpg 通过
ZCZX-GLXCDJ-UT-017 Service 新增落库 单元测试 JUnit5+Mockito §3.3 Mock Mapper insert 正常样本 del_flag=0pen_code 写入;ear_tags 按规则
ZCZX-GLXCDJ-UT-018 Service 数量为 0 耳标空 单元测试 JUnit5+Mockito §2.5 Mock insert qty=0 ear_tags 为 null
ZCZX-GLXCDJ-UT-019 Service 修改全字段 单元测试 JUnit5+Mockito §5.3 已有记录 update 改圈位/数量/耳标 字段更新;再校验 P1~P3
ZCZX-GLXCDJ-UT-020 Service 逻辑删除 单元测试 JUnit5+Mockito §3.4 Mock remove(id) del_flag=2
ZCZX-GLXCDJ-UT-021 Mapper 列表日期区间 单元测试 JUnit5 §3.1 测试库 3 条不同日 selectList(start,end) 仅闭区间内记录
ZCZX-GLXCDJ-UT-022 Mapper 圈位编号模糊 单元测试 JUnit5 §3.1 有 01、02 penCode=1 命中 01、11 等含 1 的编号

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-GLXCDJ-API-001 列表 默认分页排序 接口测试 Postman §3.1 有巡查数据 GET /list code=200;≤20 条;patrolTime 倒序
ZCZX-GLXCDJ-API-002 列表 巡查日期区间 接口测试 Postman §5.2.1 已知巡查日 patrolDateStart/End 含该日 命中;区间外不出现
ZCZX-GLXCDJ-API-003 列表 圈位编号模糊 接口测试 Postman §5.2.1 有 01、02 penCode=1 01 等片段行
ZCZX-GLXCDJ-API-004 列表 组合筛选 接口测试 Postman 多条件 已登录 日期+圈位 同时满足才命中
ZCZX-GLXCDJ-API-005 列表 日期起止倒置 接口测试 Postman §3.1 已登录 Start>End 400 或失败提示
ZCZX-GLXCDJ-API-006 列表 不含已删除 接口测试 Postman 逻辑删除 某 id 已删 GET /list 无该 id
ZCZX-GLXCDJ-API-007 在栏下拉 penOptions 接口测试 Postman §3.5 E1 在栏 GET /penOptions data 含 P1、P2;按 penCode 升序
ZCZX-GLXCDJ-API-008 在栏下拉 无在栏空数组 接口测试 Postman §2.3 全部登记已过期 GET /penOptions data=[]
ZCZX-GLXCDJ-API-009 在栏耳标 penEarTags 接口测试 Postman §3.6 P1 有 E001,E002 GET /penEarTags?penId=1 数组含两耳标
ZCZX-GLXCDJ-API-010 在栏耳标 缺 penId 接口测试 Postman 异常 已登录 penId 400 或失败
ZCZX-GLXCDJ-API-011 在栏耳标 非在栏圈位 接口测试 Postman §2.4 圈位无在栏 penId 无效 [] 或 400
ZCZX-GLXCDJ-API-012 新增 正常 qty=0 接口测试 Postman §5.1 P1 在栏 POST 正常 Body code=200earTags
ZCZX-GLXCDJ-API-013 新增 异常 qty=2 接口测试 Postman §5.1 P1 在栏 POST 异常 Body 成功;earTagList 2 个
ZCZX-GLXCDJ-API-014 新增 含巡查照片 接口测试 Postman §2.9 已 upload png Body 带 photoUrl/Path 成功;详情有图
ZCZX-GLXCDJ-API-015 新增 缺巡查时间 接口测试 Postman 异常 已登录 patrolTime 失败
ZCZX-GLXCDJ-API-016 新增 巡查时间未来 接口测试 Postman §2.2 已登录 patrolTime 明天 失败
ZCZX-GLXCDJ-API-017 新增 缺圈位 接口测试 Postman 异常 已登录 penId 失败
ZCZX-GLXCDJ-API-018 新增 圈位非在栏 接口测试 Postman §2.3 无在栏 penId POST 失败
ZCZX-GLXCDJ-API-019 新增 P1 数量>0 无耳标 接口测试 Postman §2.8 P1/P2 已登录 sickDeadQty=1,无耳标 失败
ZCZX-GLXCDJ-API-020 新增 P2 耳标数不等 接口测试 Postman §2.8 P2 已登录 sickDeadQty=2,1 耳标 失败;msg 含数量不一致
ZCZX-GLXCDJ-API-021 新增 P3 耳标超范围 接口测试 Postman §2.8 P3 P1 仅 E001 earTagList=["E009"] 失败
ZCZX-GLXCDJ-API-022 新增 P1 数量0 带耳标 接口测试 Postman §2.8 P1 已登录 sickDeadQty=0 带耳标 失败
ZCZX-GLXCDJ-API-023 新增 文案超长 接口测试 Postman §2.5 已登录 contentDesc 201 字 失败
ZCZX-GLXCDJ-API-024 新增 照片后缀非法 接口测试 Postman §2.9 已登录 photoPath.exe 失败
ZCZX-GLXCDJ-API-025 新增 病死数量为负 接口测试 Postman §2.4 已登录 sickDeadQty=-1 失败
ZCZX-GLXCDJ-API-026 详情 有效 id 接口测试 Postman §5.4 有记录 R1 GET /{id} earTagListphotoUrl
ZCZX-GLXCDJ-API-027 详情 无效/已删 id 接口测试 Postman 异常 已登录 不存在或已删 失败或 data
ZCZX-GLXCDJ-API-028 修改 改数量与耳标 接口测试 Postman §5.3 有 R1 qty=0 PUT 改 qty=1+耳标 成功;详情已更新
ZCZX-GLXCDJ-API-029 修改 改圈位清空耳标 接口测试 Postman §5.1.2 R1 在 P1 PUT 改 P2;耳标须重选 未选在栏耳标则失败
ZCZX-GLXCDJ-API-030 修改 违反 P2 接口测试 Postman §2.8 有 R1 PUT 数量与耳标不一致 失败
ZCZX-GLXCDJ-API-031 修改 清空照片 接口测试 Postman §3.3 有图记录 PUT photoUrl/Path="" 成功;详情无图
ZCZX-GLXCDJ-API-032 修改 不存在 id 接口测试 Postman 异常 已登录 伪造 id PUT 失败
ZCZX-GLXCDJ-API-033 删除 单条逻辑删 接口测试 Postman §5.5 有 R1 DELETE /{id} 成功;列表不可见
ZCZX-GLXCDJ-API-034 删除 重复删除 接口测试 Postman 幂等 已删 id 再次 DELETE 失败或不存在
ZCZX-GLXCDJ-API-035 端到端 CRUD 串联 接口测试 Postman §4 在栏数据齐备 POSTlistGETPUTDELETE 每步 code=200
ZCZX-GLXCDJ-API-036 鉴权 未登录 接口测试 curl 安全 无 Token GET /list 401 或统一未登录
ZCZX-GLXCDJ-API-037 权限 无新增权限 接口测试 Postman §6 仅 list POST 无权限失败
ZCZX-GLXCDJ-API-038 权限 无删除权限 接口测试 Postman §6 无 remove DELETE 无权限失败
ZCZX-GLXCDJ-API-039 响应 失败可读 接口测试 Postman §8 已登录 触发 P2、非在栏圈位 msg 可区分场景

三、界面测试用例(UI)

测试工具Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-GLXCDJ-UI-001 列表 默认展示列 UI 测试 Playwright+Chrome §5.2.3 已登录;有数据 进入「隔离巡查登记」 含巡查时间、圈位编号、巡查照片、巡查内容描述、处理情况、病死病害数量、耳标号、操作
ZCZX-GLXCDJ-UI-002 列表 巡查日期筛选 UI 测试 Playwright+Chrome §5.2.1 已知日期记录 选日期范围→搜索 仅范围内记录
ZCZX-GLXCDJ-UI-003 列表 圈位编号模糊 UI 测试 Playwright+Chrome §5.2.1 有 01 圈位记录 1→搜索 命中含 01 行
ZCZX-GLXCDJ-UI-004 列表 重置 UI 测试 Playwright+Chrome §5.2 已筛选 搜索→重置 条件清空;列表恢复
ZCZX-GLXCDJ-UI-005 列表 照片缩略/查看 UI 测试 Playwright+Chrome §5.2.3 有图记录 查看照片列 缩略图或查看可预览
ZCZX-GLXCDJ-UI-006 列表 数量0耳标列 UI 测试 Playwright+Chrome §2.7 有 qty=0 行 查看耳标列 显示「—」或空
ZCZX-GLXCDJ-UI-007 新增 巡查时间默认 UI 测试 Playwright+Chrome §5.1 有 add 权限 打开新增弹窗 巡查时间≈当前时刻
ZCZX-GLXCDJ-UI-008 新增 圈位下拉在栏 UI 测试 Playwright+Chrome §2.3 E1 在栏 打开圈位下拉 仅 P1、P2 等;无已删/空圈
ZCZX-GLXCDJ-UI-009 新增 无在栏提示 UI 测试 Playwright+Chrome §2.3 无在栏登记 打开新增 提示「暂无在栏圈位…」或下拉空
ZCZX-GLXCDJ-UI-010 新增 数量默认0联动文案 UI 测试 Playwright+Chrome §5.1.2 新增弹窗 保持数量 0 内容「巡查结果正常」;处理「无需处理」;无耳标区
ZCZX-GLXCDJ-UI-011 新增 数量>0联动文案 UI 测试 Playwright+Chrome §5.1.2 新增;选 P1 数量改 2 内容「巡查结果异常」;处理「需要处理」;显示耳标多选
ZCZX-GLXCDJ-UI-012 新增 耳标选项范围 UI 测试 Playwright+Chrome §2.7 P1 在栏 E001,E002 数量 1→选耳标 下拉仅 E001、E002
ZCZX-GLXCDJ-UI-013 新增 耳标个数校验 UI 测试 Playwright+Chrome §2.8 P2 新增 数量 2、只选 1 耳标→确定 提示数量不一致;不提交
ZCZX-GLXCDJ-UI-014 新增 换圈位清空耳标 UI 测试 Playwright+Chrome §5.1.2 已选 P1 与耳标 改选 P2 耳标清空;选项变为 P2 在栏耳标
ZCZX-GLXCDJ-UI-015 新增 数量改0隐藏耳标 UI 测试 Playwright+Chrome §5.1.2 已选 2 耳标 数量改 0 耳标区隐藏;已选清空
ZCZX-GLXCDJ-UI-016 新增 上传照片合法 UI 测试 Playwright+Chrome §2.9 png≤10MB 上传 png 成功;列表/详情可见
ZCZX-GLXCDJ-UI-017 新增 上传非法 UI 测试 Playwright+Chrome §2.9 exe 或>10MB 选择上传 提示格式或大小限制
ZCZX-GLXCDJ-UI-018 新增 保存正常全流程 UI 测试 Playwright+Chrome §4.2 在栏+权限 qty=0 填全→确定 成功;列表新行正确
ZCZX-GLXCDJ-UI-019 新增 保存异常全流程 UI 测试 Playwright+Chrome §4.2 P1 两耳标 qty=2 选 E001,E002→确定 成功;耳标列展示两号
ZCZX-GLXCDJ-UI-020 新增 巡查时间未来 UI 测试 Playwright+Chrome §2.2 新增 选未来时间→保存 前端或提交失败提示
ZCZX-GLXCDJ-UI-021 新增 取消 UI 测试 Playwright+Chrome §5.1.3 新增 填数据→取消 弹窗关;无新行
ZCZX-GLXCDJ-UI-022 查看 只读全字段 UI 测试 Playwright+Chrome §5.4 有记录 点击查看 各字段只读;照片可预览
ZCZX-GLXCDJ-UI-023 编辑 改数量与耳标 UI 测试 Playwright+Chrome §5.3 qty=0 记录 编辑→改 qty=1→选耳标→确定 列表/详情已更新
ZCZX-GLXCDJ-UI-024 编辑 清除照片 UI 测试 Playwright+Chrome §5.3 有图记录 编辑→删除照片→确定 详情无图
ZCZX-GLXCDJ-UI-025 删除 确认删除 UI 测试 Playwright+Chrome §5.5 任意行 删除→确认 行消失
ZCZX-GLXCDJ-UI-026 删除 取消删除 UI 测试 Playwright+Chrome §5.5 任意行 删除→取消 行仍在
ZCZX-GLXCDJ-UI-027 端到端 全流程 UI 集成 Playwright+Chrome §4 权限+在栏 新增正常→筛选→查看→编辑异常→删除 无报错;数据一致
ZCZX-GLXCDJ-UI-028 权限 只读角色 UI 测试 Playwright+Chrome §6 仅 list/query 进入模块 无新增/编辑/删除按钮
ZCZX-GLXCDJ-UI-029 查看 详情进编辑 UI 测试 Playwright+Chrome §5.4 查看弹窗 点「编辑」 编辑弹窗回显数据

Playwright 与谷歌浏览器(实施提示)

  • 安装:npm i -D @playwright/testnpx playwright install chrome
  • 配置:use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' }storageState 复用登录态。
  • 路由:page.goto('/tradeMarket/isolationPatrol')(以菜单 component 为准)。
  • 新增:page.getByRole('button', { name: '新增' }).click() → 选圈位 → 填病死病害数量 → 按需选耳标 → 确定。
  • 日期筛选:page.getByLabel('巡查日期') 使用 daterangepage.getByRole('button', { name: '搜索' }).click()
  • 耳标:page.getByLabel('耳标号') 多选;数量改 0 时断言耳标区域 hidden 或不可见。

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-004、006、010~013、017~019 API-007~014、026、028、035 UI-007~012、018~019、022~023、027
异常流程 UT-002、003、005、007、012、015 API-005、010~011、015~025、027、032、034 UI-009、013、017、020~021、025~026
业务约束 P1~P3 UT-003~008 API-019~022 UI-010~015、013、019
在栏圈位/耳标 UT-009~011 API-007~011、018 UI-008~009、012、014
数量联动文案 UI-010~011、015
巡查时间 UT-012~013 API-016 UI-007、020
列表筛选 UT-021~022 API-002~004 UI-002~004
巡查照片 UT-016 API-014、024 UI-005、016~017、024
逻辑删除 UT-020 API-006、033~034 UI-025~026
权限/鉴权 API-036~038 UI-028

功能需求追溯(自查)

需求章节 要点 主要对应用例
§5.1 新增 字段、联动、P1~P3 UT-003~008、017~018;API-012~025;UI-007~021
§5.2 列表 日期区间、圈位模糊 UT-021~022;API-001~006;UI-001~006
§5.3 修改 全字段可改 UT-019;API-028~032;UI-023~024
§5.4 查看 只读 API-026;UI-022、029
§5.5 删除 逻辑删 UT-020;API-033~034;UI-025~026
§2.3~2.4 在栏 penOptions/penEarTags UT-009~011;API-007~011、018;UI-008~009、012
§2.8 P1~P3 数量与耳标 UT-003~008;API-019~022;UI-010~015、013
§2.9 照片 jpg/png≤10MB UT-016;API-014、024;UI-016~017
§6 权限 按钮权限 API-037~038;UI-028

修订记录

版本 说明
1.0 初版:UT/API/UI 全表;覆盖正常/异常/P1~P3/在栏/筛选/权限;Playwright+Chrome