西藏巴青项目

入场隔离登记测试用例.md 17KB

入场隔离登记 — 测试用例

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

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

类型 样本 要点
供应商 biz_supplier S1 id=1 扎西牧民合作社 del_flag=0
圈位 biz_isolation_pen P1 01P2 02 del_flag=0
全局隔离天数 7 biz_isolation_setting.default_days=7(无则前端兜底 3)

合法新增 Body 示例(2 头、分 2 圈):

{
  "entryTime": "2026-05-20 10:00:00",
  "supplierId": 1,
  "certNo": "QZ20260520001",
  "quantity": 2,
  "earTagList": ["E001", "E002"],
  "isolationDays": 7,
  "penAllocList": [
    { "penId": 1, "earTagList": ["E001"] },
    { "penId": 2, "earTagList": ["E002"] }
  ]
}

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


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-RCGLDJ-UT-001 耳标解析 英文逗号拆分 单元测试 JUnit5 §2.5 EarTagCodec.parse("A,B,C") ["A","B","C"]
ZCZX-RCGLDJ-UT-002 耳标解析 中文逗号 单元测试 JUnit5 §2.3 parse("A,B") 2 段
ZCZX-RCGLDJ-UT-003 耳标解析 trim 与空段 单元测试 JUnit5 §2.3 parse(" A , , B ") ["A","B"]
ZCZX-RCGLDJ-UT-004 耳标解析 去重拒绝 单元测试 JUnit5 §2.3 parse("E1,E1") 抛异常或返回需校验失败
ZCZX-RCGLDJ-UT-005 耳标解析 单段超长 单元测试 JUnit5 §2.5 33 字符耳标 校验失败
ZCZX-RCGLDJ-UT-006 解除日期 自然日相加 单元测试 JUnit5 §2.5 calc("2026-05-20 10:00:00",7) 2026-05-27
ZCZX-RCGLDJ-UT-007 解除日期 跨月 单元测试 JUnit5 §2.5 entry=2026-05-28days=5 2026-06-02
ZCZX-RCGLDJ-UT-008 一致性 R1 数量=耳标数 单元测试 JUnit5 §2.6 quantity=3,耳标 2 个 失败
ZCZX-RCGLDJ-UT-009 一致性 R2 分圈数量之和 单元测试 JUnit5 §2.6 总量 2 分圈 1+2 失败
ZCZX-RCGLDJ-UT-010 一致性 R3 耳标遗漏 单元测试 JUnit5 §2.6 主表 E1,E2 分圈仅 E1 失败
ZCZX-RCGLDJ-UT-011 一致性 R4 跨圈重复耳标 单元测试 JUnit5 §2.6 主表 E1,E2 两圈均含 E1 失败
ZCZX-RCGLDJ-UT-012 一致性 R5 本圈数量 单元测试 JUnit5 §2.6 圈行 quantity=2,耳标 1 个 失败
ZCZX-RCGLDJ-UT-013 一致性 合法全量 单元测试 JUnit5 §2.6 合法 Body validate(saveDto) 通过
ZCZX-RCGLDJ-UT-014 一致性 分圈为空 单元测试 JUnit5 §5.1 penAllocList=[] 失败
ZCZX-RCGLDJ-UT-015 一致性 同登记重复圈位 单元测试 JUnit5 §5.1.3 两条 penId=1 失败
ZCZX-RCGLDJ-UT-016 外键 供应商已删 单元测试 JUnit5+Mockito §2.8 del_flag=2 validate 失败
ZCZX-RCGLDJ-UT-017 外键 圈位已删 单元测试 JUnit5+Mockito §2.8 圈位已删 validate 失败
ZCZX-RCGLDJ-UT-018 字段校验 检疫证号长度 单元测试 JUnit5 §5.1 空、51 字、50 字 空/51 失败;50 通过
ZCZX-RCGLDJ-UT-019 字段校验 隔离天数范围 单元测试 JUnit5 §5.1 0136503651 0/3651 失败;1/3650 通过
ZCZX-RCGLDJ-UT-020 文件校验 检疫证后缀 单元测试 JUnit5 §2.7 .exe.pdf.PDF exe 失败;pdf 通过
ZCZX-RCGLDJ-UT-021 Service 新增主从落库 单元测试 JUnit5+Mockito §3.3 Mock Mapper insert 合法样本 主表 del_flag=0;子表 2 行;expected_release_date 已算
ZCZX-RCGLDJ-UT-022 Service 修改覆盖分圈 单元测试 JUnit5+Mockito §3.3 已有 2 条子表 updatepenAllocList 旧子表删净;新子表插入
ZCZX-RCGLDJ-UT-023 Service 逻辑删除 单元测试 JUnit5+Mockito §3.4 Mock remove(id) 主表 del_flag=2
ZCZX-RCGLDJ-UT-024 Service 删除有关联 单元测试 JUnit5+Mockito §2.9 hasReference=true remove ServiceException

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-RCGLDJ-API-001 列表 默认分页排序 接口测试 Postman §3.1 有登记数据 GET /list code=200;≤20 条;entryTime 倒序
ZCZX-RCGLDJ-API-002 列表 进场日期区间 接口测试 Postman §5.2.1 已知进场日 entryDateStart/End 含该日 命中;区间外不出现
ZCZX-RCGLDJ-API-003 列表 检疫证号模糊 接口测试 Postman §5.2.1 证号 QZ2026 certNo=QZ2026 含片段行
ZCZX-RCGLDJ-API-004 列表 供应商精确 接口测试 Postman §5.2.1 S1、S2 各有登记 supplierId=S1 仅 S1 记录
ZCZX-RCGLDJ-API-005 列表 组合筛选 接口测试 Postman 多条件 已登录 日期+证号+供应商 同时满足才命中
ZCZX-RCGLDJ-API-006 列表 不含已删除 接口测试 Postman 逻辑删除 某 id 已删 GET /list 无该 id
ZCZX-RCGLDJ-API-007 新增 合法全量 接口测试 Postman §5.1 S1、P1/P2 POST 合法 Body code=200expectedReleaseDate=2026-05-27
ZCZX-RCGLDJ-API-008 新增 含检疫证文件 接口测试 Postman §2.7 /common/upload pdf Body 带 certFileUrl/Path 成功;详情可下载
ZCZX-RCGLDJ-API-009 新增 缺供应商 接口测试 Postman 异常 已登录 supplierId 失败
ZCZX-RCGLDJ-API-010 新增 缺检疫证号 接口测试 Postman 异常 已登录 certNo 失败
ZCZX-RCGLDJ-API-011 新增 R1 数量≠耳标数 接口测试 Postman §2.6 R1 已登录 quantity=2,耳标 1 个 失败;msg 含数量/耳标
ZCZX-RCGLDJ-API-012 新增 R2 分圈数量之和 接口测试 Postman §2.6 R2 总量 2 分圈 2+1 失败
ZCZX-RCGLDJ-API-013 新增 R3 未分圈耳标 接口测试 Postman §2.6 R3 主表 E1,E2 分圈仅 E1 失败
ZCZX-RCGLDJ-API-014 新增 R4 耳标跨圈重复 接口测试 Postman §2.6 R4 主表 E1,E2 两圈均 E1 失败
ZCZX-RCGLDJ-API-015 新增 重复圈位 接口测试 Postman §5.1.3 已登录 两条相同 penId 失败
ZCZX-RCGLDJ-API-016 新增 无效供应商 接口测试 Postman §2.8 已删供应商 id POST 失败
ZCZX-RCGLDJ-API-017 新增 无效圈位 接口测试 Postman §2.8 已删 penId POST 失败
ZCZX-RCGLDJ-API-018 新增 检疫证后缀非法 接口测试 Postman §2.7 已登录 certFilePath.exe 失败
ZCZX-RCGLDJ-API-019 新增 隔离天数非法 接口测试 Postman §5.1 已登录 isolationDays=0/3651 失败
ZCZX-RCGLDJ-API-020 新增 主表耳标重复 接口测试 Postman §2.3 已登录 earTagList=["E1","E1"] 失败
ZCZX-RCGLDJ-API-021 新增 分圈耳标超集 接口测试 Postman §5.1.3 主表 E1 分圈含 E9 失败
ZCZX-RCGLDJ-API-022 详情 有效 id 接口测试 Postman §5.4 有登记 E1 GET /{id} supplierNameearTagListpenAllocList
ZCZX-RCGLDJ-API-023 详情 无效/已删 id 接口测试 Postman 异常 已登录 不存在或已删 失败或 data
ZCZX-RCGLDJ-API-024 修改 改证号与分圈 接口测试 Postman §5.3 有 E1 PUTcertNo、重排分圈 成功;子表全量覆盖
ZCZX-RCGLDJ-API-025 修改 进场时间联动日期 接口测试 Postman §2.5 有 E1 PUT entryTime+isolationDays expectedReleaseDate 重算
ZCZX-RCGLDJ-API-026 修改 违反 R1 接口测试 Postman §2.6 有 E1 PUT 数量与耳标不一致 失败
ZCZX-RCGLDJ-API-027 修改 不存在 id 接口测试 Postman 异常 已登录 伪造 id PUT 失败
ZCZX-RCGLDJ-API-028 删除 单条逻辑删 接口测试 Postman §5.5 无关联新行 DELETE /{id} 成功;列表不可见
ZCZX-RCGLDJ-API-029 删除 有关联拒绝 接口测试 Postman §2.9 hasReference=true DELETE 失败;提示关联
ZCZX-RCGLDJ-API-030 删除 重复删除 接口测试 Postman 幂等 已删 id 再次 DELETE 失败或不存在
ZCZX-RCGLDJ-API-031 端到端 CRUD 串联 接口测试 Postman §4 已登录 POSTlistGETPUTDELETE 每步 code=200
ZCZX-RCGLDJ-API-032 鉴权 未登录 接口测试 curl 安全 无 Token GET /list 401 或统一未登录
ZCZX-RCGLDJ-API-033 权限 无新增权限 接口测试 Postman §6 仅 list POST 无权限失败
ZCZX-RCGLDJ-API-034 权限 无删除权限 接口测试 Postman §6 无 remove DELETE 无权限失败
ZCZX-RCGLDJ-API-035 响应 失败可读 接口测试 Postman §8 已登录 触发 R1、重复圈位 msg 可区分场景

三、界面测试用例(UI)

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

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-RCGLDJ-UI-001 列表 默认展示 UI 测试 Playwright+Chrome §5.2.3 已登录;有数据 进入「入场隔离登记」 含进场时间、供应商、检疫证号、数量、圈位分配、隔离天数、解除日期、操作
ZCZX-RCGLDJ-UI-002 列表 进场日期筛选 UI 测试 Playwright+Chrome §5.2.1 已知日期登记 选日期范围→搜索 仅范围内记录
ZCZX-RCGLDJ-UI-003 列表 检疫证号模糊 UI 测试 Playwright+Chrome §5.2.1 有证号含 QZ 填片段→搜索 命中对应行
ZCZX-RCGLDJ-UI-004 列表 供应商筛选 UI 测试 Playwright+Chrome §5.2.1 多供应商数据 下拉选 S1→搜索 仅 S1
ZCZX-RCGLDJ-UI-005 列表 重置 UI 测试 Playwright+Chrome §5.2 已筛选 搜索→重置 条件清空;列表恢复
ZCZX-RCGLDJ-UI-006 列表 圈位分配表 UI 测试 Playwright+Chrome §5.2.3 有分圈数据 点击「圈位分配表」 弹窗展示圈位编号、数量、耳标
ZCZX-RCGLDJ-UI-007 新增 进场时间默认 UI 测试 Playwright+Chrome §5.1 有 add 权限 打开新增弹窗 进场时间≈当前时刻
ZCZX-RCGLDJ-UI-008 新增 供应商模糊选 UI 测试 Playwright+Chrome §2.8 有 S1 供应商输入关键字→选 S1 选中后展示名称
ZCZX-RCGLDJ-UI-009 新增 隔离天数默认 UI 测试 Playwright+Chrome §2.5 全局 7 天 打开新增 隔离天数默认 7
ZCZX-RCGLDJ-UI-010 新增 预计解除日期联动 UI 测试 Playwright+Chrome §2.5 新增弹窗 改进场日期或隔离天数 解除日期自动更新
ZCZX-RCGLDJ-UI-011 新增 上传检疫证合法 UI 测试 Playwright+Chrome §2.7 有 pdf≤30MB 上传 pdf 成功;可预览/删除
ZCZX-RCGLDJ-UI-012 新增 上传格式/大小非法 UI 测试 Playwright+Chrome §2.7 有 exe 或超大文件 选择上传 提示格式或 10/30MB 限制
ZCZX-RCGLDJ-UI-013 新增 添加分圈成功 UI 测试 Playwright+Chrome §5.1.3 主表耳标 E1,E2 添加分圈→P1 选 E1→P2 选 E2→确定 表格 2 行;数量各 1
ZCZX-RCGLDJ-UI-014 新增 分圈耳标不可重复选 UI 测试 Playwright+Chrome §5.1.3 R4 已分圈 E1 再添加分圈 下拉无 E1 或选后校验失败
ZCZX-RCGLDJ-UI-015 新增 同圈位不可重复 UI 测试 Playwright+Chrome §5.1.3 已占 P1 再添加 P1 提示圈位已添加
ZCZX-RCGLDJ-UI-016 新增 保存合法全流程 UI 测试 Playwright+Chrome §4.2 权限齐备 填主表+分圈→确定 成功提示;列表新行数据正确
ZCZX-RCGLDJ-UI-017 新增 R1 前端校验 UI 测试 Playwright+Chrome §2.6 新增 数量 2、耳标 1 个→保存 校验失败;不提交
ZCZX-RCGLDJ-UI-018 新增 未分圈保存 UI 测试 Playwright+Chrome §5.1 新增 填主表无分圈→保存 提示须添加分圈
ZCZX-RCGLDJ-UI-019 新增 取消 UI 测试 Playwright+Chrome §5.1.4 新增 填数据→取消 弹窗关;无新行
ZCZX-RCGLDJ-UI-020 查看 只读含分圈 UI 测试 Playwright+Chrome §5.4 有登记 点击查看 主表只读;分圈表只读;有检疫证链接
ZCZX-RCGLDJ-UI-021 编辑 改分圈保存 UI 测试 Playwright+Chrome §5.3 有登记 编辑→删一行分圈→重分圈→确定 列表/详情已更新
ZCZX-RCGLDJ-UI-022 编辑 分圈行删除 UI 测试 Playwright+Chrome §5.1.2 编辑 分圈表点删除 行移除
ZCZX-RCGLDJ-UI-023 删除 确认删除 UI 测试 Playwright+Chrome §5.5 无关联行 删除→确认 行消失
ZCZX-RCGLDJ-UI-024 删除 取消删除 UI 测试 Playwright+Chrome §5.5 任意行 删除→取消 行仍在
ZCZX-RCGLDJ-UI-025 端到端 全流程 UI 集成 Playwright+Chrome §4 权限齐备 新增→筛选→圈位表→查看→编辑→删除 无报错;数据一致
ZCZX-RCGLDJ-UI-026 权限 只读角色 UI 测试 Playwright+Chrome §6 仅 list/query 进入模块 无新增/编辑/删除按钮
ZCZX-RCGLDJ-UI-027 查看 从详情进编辑 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/entryIsolation')(以菜单 component 为准)。
  • 新增:page.getByRole('button', { name: '新增' }).click() → 填进场时间、选供应商、检疫证号、数量、耳标 → getByRole('button', { name: '添加分圈' }) 完成分圈 → 确定。
  • 分圈子窗:page.getByLabel('圈位编号').click() 选圈位 → 耳标多选 → 确定。
  • 列表筛选:page.getByLabel('进场日期')daterangegetByRole('button', { name: '搜索' }).click()

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-013、021~022 API-007~008、022、024~025、031 UI-006~011、013、016、020~021、025
异常流程 UT-004、008~012、014~017、024 API-009~010、011~021、023、026~030 UI-012、017~018、023~024
业务约束 R1~R5 UT-008~015 API-011~015、020~021、026 UI-013~018
解除日期计算 UT-006~007 API-007、025 UI-009~010
耳标解析 UT-001~005 API-020 UI-013~014
关联主数据 UT-016~017 API-016~017 UI-008
检疫证文件 UT-020 API-008、018 UI-011~012
列表筛选 API-002~005 UI-002~005
逻辑删除 UT-023 API-006、028~030 UI-023
权限/鉴权 API-032~034 UI-026

功能需求追溯(自查)

需求章节 要点 主要对应用例
§5.1 新增 主表+分圈、校验 UT-008~015、021;API-007~021;UI-007~019
§5.2 列表 日期/证号/供应商 API-002~005;UI-002~006
§5.3 修改 全量可改、重算日期 UT-022;API-024~026;UI-021~022
§5.4 查看 只读、圈位分配表 API-022;UI-006、020、027
§5.5 删除 逻辑删、关联 UT-023~024;API-028~030;UI-023~024
§2.6 一致性 R1~R5 UT-008~015;API-011~015;UI-013~018
§2.5 解除日期 自动计算 UT-006~007;API-007、025;UI-010
§2.7 检疫证 后缀/大小 UT-020;API-008、018;UI-011~012
§2.8 关联 供应商/圈位 UT-016~017;API-016~017;UI-008
§6 权限 按钮级 API-032~034;UI-026

修订记录

版本 说明
1.0 初版:单元 24、接口 35、UI 27;覆盖 R1~R5、主从表 CRUD、筛选、检疫证、Playwright+Chrome;前缀 ZCZX-RCGLDJ