市场进栏登记 — 测试用例
依据:市场进栏登记功能需求.md、市场进栏登记技术方案.md
接口 Base Path:/tradeMarket/marketEntry;鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块权限的账号已登录(tradeMarket:marketEntry:list|query|add|edit|remove)。关联主数据宜预置:
| 类型 |
样本 |
要点 |
供应商 biz_supplier |
S1 id=1 扎西合作社、S2 id=2 |
del_flag=0 |
市场栏位 biz_market_stall |
M1 id=1 stall_code=01、M2 id=2 02 |
del_flag=0 |
入场隔离 biz_entry_isolation |
EI-END |
supplier_id=1;del_flag=0;expected_release_date <= 今天;主表 ear_tags=E101,E102,E103 |
| 入场隔离 |
EI-ING |
同 S1;expected_release_date > 今天(不进可选池 A) |
隔离巡查 biz_isolation_patrol |
P-SICK |
del_flag=0;sick_dead_qty>0;ear_tags=E102(全表汇总为 B,不按供应商) |
| 隔离巡查 |
P-SICK-OTHER |
同上;ear_tags=E999(其他供应商圈位巡查,仍计入 B) |
进栏登记 biz_market_entry |
ME-OTHER |
del_flag=0;supplier_id=1;子表含 E103(保存时占用 C,不影响 supplierEarTags) |
合法新增 Body 示例(1 头):
{
"entryTime": "2026-05-20 14:00:00",
"stallId": 1,
"supplierId": 1,
"earTagList": ["E101"]
}
可选耳标池速查
| 场景 |
公式 |
说明 |
GET /supplierEarTags |
A − B |
A:该供应商隔离已结束主表耳标;B:全表巡查病死耳标(逗号拆分) |
| 保存 R4 |
(A − B) − C |
C:他单有效进栏占用;编辑时 excludeEntryId 释放本条 |
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。组件路径:tradeMarket/marketEntry/index。
自动化对照:com.ruoyi.web.modules.trading.**.*MarketEntry*(JUnit5 / MockMvc)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-SCJLDJ-UT-001 |
耳标解析 |
逗号拆分与 trim |
单元测试 |
JUnit5 |
§3.4 复用 |
无 |
EarTagCodec.parse(" E101 , E102 ") |
["E101","E102"] |
| ZCZX-SCJLDJ-UT-002 |
耳标解析 |
本条内重复 |
单元测试 |
JUnit5 |
R5 |
无 |
resolveMainTags 含重复段 |
抛异常;提示重复耳标 |
| ZCZX-SCJLDJ-UT-003 |
耳标解析 |
单段超长 |
单元测试 |
JUnit5 |
§3.4 |
无 |
33 字符耳标 |
校验失败 |
| ZCZX-SCJLDJ-UT-004 |
保存校验 |
R6 以耳标数为准 |
单元测试 |
JUnit5 |
R6 |
Mock 合法主数据 |
quantity=9,earTagList 2 个 → prepareAndValidate |
通过后 quantity=2 |
| ZCZX-SCJLDJ-UT-005 |
保存校验 |
R1 无耳标 |
单元测试 |
JUnit5 |
R1 |
Mock |
空 earTagList |
失败;请至少选择一个耳标号 |
| ZCZX-SCJLDJ-UT-006 |
保存校验 |
R1 合法通过 |
单元测试 |
JUnit5 |
R1 |
Mock;池含 E101 |
MarketEntryTestSamples.normalSaveRow() |
通过;quantity=1 |
| ZCZX-SCJLDJ-UT-007 |
保存校验 |
R4 他单占用 |
单元测试 |
JUnit5 |
§4.3 |
池不含 E103;occupied 含 E103 |
保存含 E103 |
失败;msg 含「已被其他进栏记录占用」 |
| ZCZX-SCJLDJ-UT-008 |
保存校验 |
R4 编辑释放本条 |
单元测试 |
JUnit5 |
§4.3 |
id=1001;池含 E103 |
excludeEntryId 参与校验 |
本条 E103 可保存 |
| ZCZX-SCJLDJ-UT-009 |
保存校验 |
R4 病死剔除 |
单元测试 |
JUnit5 |
§4.2 |
池不含 E102(B) |
保存 E102 |
失败;不可进栏或不在可选范围 |
| ZCZX-SCJLDJ-UT-010 |
保存校验 |
R4 可选池内 |
单元测试 |
JUnit5 |
§4 |
池含 E101 |
保存 E101 |
通过 |
| ZCZX-SCJLDJ-UT-011 |
保存校验 |
R2 未来时间 |
单元测试 |
JUnit5 |
R2 |
Mock |
entryTime 为明天 |
失败;不能晚于当前时间 |
| ZCZX-SCJLDJ-UT-012 |
保存校验 |
R2 当前时刻 |
单元测试 |
JUnit5 |
R2 |
Mock |
entryTime=now |
通过 |
| ZCZX-SCJLDJ-UT-013 |
列表校验 |
日期区间颠倒 |
单元测试 |
JUnit5 |
§6.2 |
无 |
validateDateRange("2026-05-21","2026-05-20") |
失败;开始不能晚于结束 |
| ZCZX-SCJLDJ-UT-014 |
保存校验 |
R3 栏位已删 |
单元测试 |
JUnit5+Mockito |
R3 |
biz_market_stall 不存在 |
validate |
失败;栏位不存在或已删除 |
| ZCZX-SCJLDJ-UT-015 |
保存校验 |
R3 供应商已删 |
单元测试 |
JUnit5+Mockito |
R3 |
供应商 del_flag=2 |
validate |
失败;供应商不存在或已删除 |
| ZCZX-SCJLDJ-UT-016 |
耳标池 |
supplierEarTags A−B |
单元测试 |
JUnit5+Mockito |
§4.1~4.2、§5.1 |
Mock A 含 E101,E102,E103;B 含 E102 |
listSupplierEarTagOptions(1) |
["E101","E103"];不含 E102 |
| ZCZX-SCJLDJ-UT-017 |
耳标池 |
保存 (A−B)−C |
单元测试 |
JUnit5+Mockito |
§4.3、§5.2 |
Mock 同上;C 含 E101 |
listEligible(1,null) |
仅 ["E103"] |
| ZCZX-SCJLDJ-UT-018 |
耳标池 |
占用集合 |
单元测试 |
JUnit5+Mockito |
§4.3 |
Mock 子表占用 |
loadOccupiedEarTags(null) |
含 ME-OTHER 的 E103 |
| ZCZX-SCJLDJ-UT-019 |
耳标池 |
A 未结束隔离 |
单元测试 |
JUnit5+Mockito |
§4.1 |
仅 EI-ING 有耳标 |
listSupplierEarTagOptions |
空列表 |
| ZCZX-SCJLDJ-UT-020 |
耳标池 |
全表 B 剔除 |
单元测试 |
JUnit5+Mockito |
§4.2 |
A 含 E101;B 含 P-SICK-OTHER 的 E999 |
listSupplierEarTagOptions |
不含 E999(即使非 S1 巡查) |
| ZCZX-SCJLDJ-UT-021 |
Service |
新增冗余栏位号 |
单元测试 |
JUnit5+Mockito |
§3.2 |
Mock Mapper |
insert 合法行 |
主表 stall_code=01;子表 batchInsert |
| ZCZX-SCJLDJ-UT-022 |
Service |
修改覆盖子表 |
单元测试 |
JUnit5+Mockito |
技术方案 §3.2 |
已有子表 |
update 新 earTagList |
先删子表再插;quantity 更新 |
| ZCZX-SCJLDJ-UT-023 |
Service |
逻辑删除 |
单元测试 |
JUnit5+Mockito |
§2.2 |
Mock |
remove(id) |
主表 del_flag=2;子表保留 |
| ZCZX-SCJLDJ-UT-024 |
Service |
删除有关联 |
单元测试 |
JUnit5+Mockito |
§6.5 |
hasReference=true |
remove |
抛 ServiceException;关联文案 |
| ZCZX-SCJLDJ-UT-025 |
Service |
详情组装耳标 |
单元测试 |
JUnit5+Mockito |
§6.4 |
子表 2 行 |
selectById |
earTagList 2 项;earTags 逗号串 |
| ZCZX-SCJLDJ-UT-026 |
Mapper |
列表 SQL |
单元测试 |
JUnit5 |
§6.2 |
无 |
检查 BizMarketEntryMapper.xml |
del_flag=0;entry_time DESC;GROUP_CONCAT |
| ZCZX-SCJLDJ-UT-027 |
Mapper |
巡查 B SQL |
单元测试 |
JUnit5 |
§5.1 |
无 |
检查 selectSickDeadEarTagRows |
无 supplierId;sick_dead_qty>0 |
| ZCZX-SCJLDJ-UT-028 |
Mapper |
耳标筛选 EXISTS |
单元测试 |
JUnit5 |
§6.2 |
无 |
检查 XML |
子表 ear_tag LIKE + EXISTS |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-SCJLDJ-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman |
§6.2 |
有进栏数据 |
GET /list |
code=200;≤20 条;entryTime 倒序 |
| ZCZX-SCJLDJ-API-002 |
列表 |
进栏日期区间 |
接口测试 |
Postman |
§6.2 |
已知进栏日 |
entryDateStart/End 闭区间 |
仅范围内记录 |
| ZCZX-SCJLDJ-API-003 |
列表 |
日期区间非法 |
接口测试 |
Postman |
§6.2 |
已登录 |
start>end |
code≠200;开始不能晚于结束 |
| ZCZX-SCJLDJ-API-004 |
列表 |
栏位编号模糊 |
接口测试 |
Postman |
§6.2 |
M1=01 |
stallCode=1 |
含 M1 |
| ZCZX-SCJLDJ-API-005 |
列表 |
供应商精确 |
接口测试 |
Postman |
§6.2 |
S1、S2 各有记录 |
supplierId=1 |
仅 S1 |
| ZCZX-SCJLDJ-API-006 |
列表 |
耳标号模糊 |
接口测试 |
Postman |
§6.2 |
子表含 E101 |
earTag=101 |
命中对应行 |
| ZCZX-SCJLDJ-API-007 |
列表 |
组合筛选 |
接口测试 |
Postman |
§6.2 |
已登录 |
日期+栏位+供应商+耳标 |
同时满足才命中 |
| ZCZX-SCJLDJ-API-008 |
列表 |
不含已删除 |
接口测试 |
Postman |
§2.2 |
某 id 已删 |
GET /list |
无该 id |
| ZCZX-SCJLDJ-API-009 |
辅助 |
栏位下拉 |
接口测试 |
Postman |
§6.1 |
M1、M2 有效 |
GET /stallOptions |
[{stallId,stallCode}];仅 del_flag=0 |
| ZCZX-SCJLDJ-API-010 |
辅助 |
可选耳标 A−B |
接口测试 |
Postman |
§4.1~4.2 |
EI-END、P-SICK |
GET /supplierEarTags?supplierId=1 |
含 E101;不含 E102(病死剔除);含 ME-OTHER 占用的 E103 |
| ZCZX-SCJLDJ-API-011 |
辅助 |
无隔离结束数据 |
接口测试 |
Postman |
§4.1 |
S2 无 EI-END |
supplierEarTags?supplierId=2 |
data=[] |
| ZCZX-SCJLDJ-API-012 |
辅助 |
全表 B 剔除 |
接口测试 |
Postman |
§4.2 |
EI-END 含 E101;P-SICK-OTHER 含 E999 |
supplierEarTags?supplierId=1 |
不含 E999、E102 |
| ZCZX-SCJLDJ-API-013 |
辅助 |
无 excludeEntryId |
接口测试 |
Postman |
§5.1 |
已登录 |
仅传 supplierId |
成功;不接受 excludeEntryId |
| ZCZX-SCJLDJ-API-014 |
新增 |
合法单耳标 |
接口测试 |
Postman |
§6.1 |
样本数据齐备 |
POST 合法 Body |
code=200;quantity=1;子表 1 行 |
| ZCZX-SCJLDJ-API-015 |
新增 |
合法双耳标 |
接口测试 |
Postman |
R6 |
池含 E101、E104 |
earTagList=["E101","E104"] |
quantity=2 |
| ZCZX-SCJLDJ-API-016 |
新增 |
备注与逗号串 |
接口测试 |
Postman |
§3 |
已登录 |
remark+earTags="E101" |
成功;与 earTagList 等价解析 |
| ZCZX-SCJLDJ-API-017 |
新增 |
备注超长 |
接口测试 |
Postman |
技术方案 |
已登录 |
remark 501 字 |
失败;长度提示 |
| ZCZX-SCJLDJ-API-018 |
新增 |
缺进栏时间 |
接口测试 |
Postman |
R1 |
已登录 |
无 entryTime |
失败 |
| ZCZX-SCJLDJ-API-019 |
新增 |
缺栏位/供应商 |
接口测试 |
Postman |
R1 |
已登录 |
缺 stallId 或 supplierId |
失败;对应必填提示 |
| ZCZX-SCJLDJ-API-020 |
新增 |
无耳标 |
接口测试 |
Postman |
R1 |
已登录 |
空 earTagList |
失败;至少一个耳标 |
| ZCZX-SCJLDJ-API-021 |
新增 |
R2 未来时间 |
接口测试 |
Postman |
R2 |
已登录 |
entryTime 明天 |
失败;不能晚于当前 |
| ZCZX-SCJLDJ-API-022 |
新增 |
R3 无效栏位 |
接口测试 |
Postman |
R3 |
已删 stallId |
POST |
失败;栏位不存在 |
| ZCZX-SCJLDJ-API-023 |
新增 |
R3 无效供应商 |
接口测试 |
Postman |
R3 |
已删供应商 |
POST |
失败;供应商不存在 |
| ZCZX-SCJLDJ-API-024 |
新增 |
R5 耳标重复 |
接口测试 |
Postman |
R5 |
已登录 |
["E101","E101"] |
失败;重复耳标 |
| ZCZX-SCJLDJ-API-025 |
新增 |
R4 他单占用 |
接口测试 |
Postman |
§4.3 |
ME-OTHER 占 E103;supplierEarTags 仍含 E103 |
POST 含 E103 |
失败;已被占用 |
| ZCZX-SCJLDJ-API-026 |
新增 |
R4 病死耳标 |
接口测试 |
Postman |
§4.2 |
P-SICK 剔 E102 |
POST 含 E102 |
失败;不可进栏 |
| ZCZX-SCJLDJ-API-027 |
新增 |
R4 未结束隔离耳标 |
接口测试 |
Postman |
§4.1 |
仅 EI-ING 有 E201 |
POST E201 |
失败;不在可选范围 |
| ZCZX-SCJLDJ-API-028 |
详情 |
有效 id |
接口测试 |
Postman |
§6.4 |
有 ME-OTHER |
GET /{id} |
含 supplierName、earTagList、审计字段 |
| ZCZX-SCJLDJ-API-029 |
详情 |
无效/已删 |
接口测试 |
Postman |
异常 |
已登录 |
不存在或已删 id |
失败或 data 空 |
| ZCZX-SCJLDJ-API-030 |
修改 |
改栏位与时间 |
接口测试 |
Postman |
§6.3 |
有记录 |
PUT 改 stallId、entryTime |
成功;stallCode 随栏位更新 |
| ZCZX-SCJLDJ-API-031 |
修改 |
改耳标集合 |
接口测试 |
Postman |
§6.3 |
有记录 |
PUT 换 earTagList |
子表全量覆盖;quantity 同步 |
| ZCZX-SCJLDJ-API-032 |
修改 |
保留原耳标 |
接口测试 |
Postman |
§4.3、§5.2 |
编辑本条占 E103 |
PUT 原耳标不变 |
成功(服务端 excludeEntryId 释放 C) |
| ZCZX-SCJLDJ-API-033 |
修改 |
不存在 id |
接口测试 |
Postman |
异常 |
已登录 |
伪造 id PUT |
失败 |
| ZCZX-SCJLDJ-API-034 |
删除 |
单条逻辑删 |
接口测试 |
Postman |
§6.5 |
无关联新行 |
DELETE /{id} |
成功;列表不可见 |
| ZCZX-SCJLDJ-API-035 |
删除 |
释放后可保存 |
接口测试 |
Postman |
§4.3 |
删 ME-OTHER |
POST 含 E103 |
成功(C 已释放;supplierEarTags 本已含 E103) |
| ZCZX-SCJLDJ-API-036 |
删除 |
有关联拒绝 |
接口测试 |
Postman |
§6.5 |
hasReference=true |
DELETE |
失败;存在关联业务 |
| ZCZX-SCJLDJ-API-037 |
删除 |
重复删除 |
接口测试 |
Postman |
幂等 |
已删 id |
再次 DELETE |
失败或不存在 |
| ZCZX-SCJLDJ-API-038 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§7 |
已登录 |
POST→list→GET→PUT→DELETE |
每步 code=200 |
| ZCZX-SCJLDJ-API-039 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET /list |
401 或统一未登录 |
| ZCZX-SCJLDJ-API-040 |
权限 |
无新增权限 |
接口测试 |
Postman |
§8 |
仅 list |
POST |
无权限失败 |
| ZCZX-SCJLDJ-API-041 |
权限 |
无删除权限 |
接口测试 |
Postman |
§8 |
无 remove |
DELETE |
无权限失败 |
| ZCZX-SCJLDJ-API-042 |
路由 |
辅助在详情前 |
接口测试 |
Postman |
技术方案 §7 |
已登录 |
GET /stallOptions、/supplierEarTags |
非 404(不被 /{id} 吞掉) |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-SCJLDJ-UI-001 |
列表 |
默认展示 |
UI 测试 |
Playwright+Chrome |
§6.2 |
已登录;有数据 |
进入「市场进栏登记」 |
列含进栏时间、栏位、供应商、耳标、数量、操作 |
| ZCZX-SCJLDJ-UI-002 |
列表 |
进栏日期筛选 |
UI 测试 |
Playwright+Chrome |
§6.2 |
已知日期记录 |
选日期起止→搜索 |
仅范围内行 |
| ZCZX-SCJLDJ-UI-003 |
列表 |
日期区间非法 |
UI 测试 |
Playwright+Chrome |
§6.2 |
已登录 |
开始晚于结束→搜索 |
提示修正;不查询 |
| ZCZX-SCJLDJ-UI-004 |
列表 |
栏位模糊筛选 |
UI 测试 |
Playwright+Chrome |
§6.2 |
M1=01 |
栏位填 1→搜索 |
含 M1 行 |
| ZCZX-SCJLDJ-UI-005 |
列表 |
供应商精确 |
UI 测试 |
Playwright+Chrome |
§6.2 |
S1、S2 有数据 |
下拉选 S1→搜索 |
仅 S1 |
| ZCZX-SCJLDJ-UI-006 |
列表 |
耳标模糊 |
UI 测试 |
Playwright+Chrome |
§6.2 |
含 E101 |
耳标填片段→搜索 |
命中对应行 |
| ZCZX-SCJLDJ-UI-007 |
列表 |
重置 |
UI 测试 |
Playwright+Chrome |
§6.2 |
已筛选 |
搜索→重置 |
条件清空;列表恢复 |
| ZCZX-SCJLDJ-UI-008 |
列表 |
耳标过长省略 |
UI 测试 |
Playwright+Chrome |
§11 |
多条耳标行 |
看列表耳标列 |
过长省略;详情见全文 |
| ZCZX-SCJLDJ-UI-009 |
新增 |
进栏时间默认 |
UI 测试 |
Playwright+Chrome |
§3.1 |
有 add 权限 |
打开新增 |
默认≈当前时间;可选过去时间 |
| ZCZX-SCJLDJ-UI-010 |
新增 |
栏位下拉单选 |
UI 测试 |
Playwright+Chrome |
§3.2 |
M1 有效 |
打开栏位控件 |
仅下拉;不可手输编号 |
| ZCZX-SCJLDJ-UI-011 |
新增 |
未选供应商禁耳标 |
UI 测试 |
Playwright+Chrome |
§3.4 |
新增弹窗 |
未选供应商点耳标 |
不可选或为空;提示先选供应商 |
| ZCZX-SCJLDJ-UI-012 |
新增 |
供应商模糊搜索 |
UI 测试 |
Playwright+Chrome |
§3.3 |
有 S1 |
输入关键字→选 S1 |
选中后展示名称 |
| ZCZX-SCJLDJ-UI-013 |
新增 |
选供应商加载耳标 |
UI 测试 |
Playwright+Chrome |
§4.1~4.2 |
样本 A−B |
选 S1 |
下拉含 E101、E103;不含 E102;可含已占用 E103 |
| ZCZX-SCJLDJ-UI-014 |
新增 |
数量联动 |
UI 测试 |
Playwright+Chrome |
§3.5 |
已选 S1 |
勾选 2 个耳标 |
数量(头)=2 且只读 |
| ZCZX-SCJLDJ-UI-015 |
新增 |
更换供应商清空耳标 |
UI 测试 |
Playwright+Chrome |
§3.4 |
已选 S1 与耳标 |
改选 S2 |
已选耳标清空;可选项按 S2 刷新 |
| ZCZX-SCJLDJ-UI-016 |
新增 |
保存成功 |
UI 测试 |
Playwright+Chrome |
§6.1 |
权限齐备 |
填时间/栏位/S1/E101→确定 |
成功提示;列表新行;数量=1 |
| ZCZX-SCJLDJ-UI-017 |
新增 |
取消 |
UI 测试 |
Playwright+Chrome |
§6.1 |
新增 |
填数据→取消 |
弹窗关;无新行 |
| ZCZX-SCJLDJ-UI-018 |
新增 |
无耳标校验 |
UI 测试 |
Playwright+Chrome |
R1 |
新增 |
不选耳标→确定 |
前端或提交失败;至少一个耳标 |
| ZCZX-SCJLDJ-UI-019 |
新增 |
未来时间 |
UI 测试 |
Playwright+Chrome |
R2 |
新增 |
进栏时间选未来→确定 |
校验失败;不能晚于当前 |
| ZCZX-SCJLDJ-UI-020 |
新增 |
无可选耳标提示 |
UI 测试 |
Playwright+Chrome |
§10 |
S2 无隔离结束 |
选 S2 看耳标 |
空列表或提示确认隔离登记 |
| ZCZX-SCJLDJ-UI-021 |
查看 |
只读全量耳标 |
UI 测试 |
Playwright+Chrome |
§6.4 |
多条耳标记录 |
点击查看 |
耳标完整;含创建/修改信息 |
| ZCZX-SCJLDJ-UI-022 |
编辑 |
改栏位与耳标 |
UI 测试 |
Playwright+Chrome |
§6.3 |
有记录 |
编辑→换 M2、改耳标→确定 |
列表/详情已更新 |
| ZCZX-SCJLDJ-UI-023 |
编辑 |
从详情进编辑 |
UI 测试 |
Playwright+Chrome |
§6.4 |
查看弹窗 |
点「编辑」 |
编辑弹窗回显 |
| ZCZX-SCJLDJ-UI-024 |
删除 |
二次确认 |
UI 测试 |
Playwright+Chrome |
§6.5 |
无关联行 |
删除→确认 |
确认语含供应商/栏位/时间或头数;行消失 |
| ZCZX-SCJLDJ-UI-025 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
§6.5 |
任意行 |
删除→取消 |
行仍在 |
| ZCZX-SCJLDJ-UI-026 |
删除 |
释放后可保存 |
UI 测试 |
Playwright+Chrome |
§4.3 |
删 ME-OTHER |
新增选 E103 保存 |
保存成功(下拉本已含 E103) |
| ZCZX-SCJLDJ-UI-029 |
新增 |
占用耳标保存失败 |
UI 测试 |
Playwright+Chrome |
§4.3 |
ME-OTHER 占 E103 |
选 E103→确定 |
提示已被占用;不保存 |
| ZCZX-SCJLDJ-UI-027 |
端到端 |
全流程 |
UI 集成 |
Playwright+Chrome |
§7 |
权限齐备 |
新增→筛选→查看→编辑→删除 |
无报错;数据一致 |
| ZCZX-SCJLDJ-UI-028 |
权限 |
只读角色 |
UI 测试 |
Playwright+Chrome |
§8 |
仅 list/query |
进入模块 |
无新增/编辑/删除按钮 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chrome。
- 配置:
use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用登录态。
- 路由:
await page.goto('/tradeMarket/marketEntry')(与菜单 component 一致)。
- 列表筛选:
page.getByLabel('进栏日期') 或占位文案;page.getByRole('button', { name: '搜索' }).click()。
- 新增:
page.getByRole('button', { name: '新增' }).click() → 选栏位下拉 → 供应商远程搜索选 S1 → 耳标多选 E101 → 断言数量只读为 1 → getByRole('button', { name: '确定' }).click()。
- 供应商切换:
await page.locator('.supplier-select').click() 改 S2 后 expect(earTag).toHaveCount(0)(按实际组件 class 调整)。
- 删除确认:
page.getByRole('button', { name: '删除' }).first().click() → page.getByRole('dialog').getByRole('button', { name: '确定' }).click()。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-006、021~025 |
API-009~016、028~032、038 |
UI-009~017、021~023、027 |
| 异常流程 |
UT-002~005、007、009、011~015、024 |
API-017~027、029、033、036~037 |
UI-003、018~019、024~025、029 |
| 业务约束 R1~R6 |
UT-004~015 |
API-018~027 |
UI-011、014~019、029 |
| 耳标池 A−B |
UT-016、019~020 |
API-010~013 |
UI-013、020 |
| 保存占用 C |
UT-007~008、017~018 |
API-025、032、035 |
UI-026、029 |
| 主从表存储 |
UT-021~022、025~026 |
API-014~015、031 |
UI-014、016 |
| 列表筛选 |
UT-013、026~028 |
API-002~008 |
UI-002~008 |
| 逻辑删除 |
UT-023 |
API-008、034~037 |
UI-024~026 |
| 权限/鉴权 |
— |
API-039~041 |
UI-028 |
| 路由顺序 |
— |
API-042 |
— |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §3 字段规则 |
时间、栏位下拉、供应商、耳标、数量联动 |
UT-004~006、011~012;API-013~020;UI-009~015、018~019 |
| §4 可选耳标池 |
A 按供应商;B 全表病死;下拉 A−B;保存 (A−B)−C |
UT-016~020;API-010~013、025~027、032、035;UI-013、020、026、029 |
| §5 R1~R6 |
保存校验 |
UT-004~015;API-017~026;UI-014、018~019 |
| §6.1 新增 |
CRUD 入口 |
API-013~016;UI-009~017 |
| §6.2 列表 |
筛选、排序、仅有效 |
API-001~008;UI-001~008 |
| §6.3 修改 |
全字段可改 |
API-029~031;UI-022~023 |
| §6.4 查看 |
只读、完整耳标 |
API-027;UI-008、021 |
| §6.5 删除 |
二次确认、引用、释放占用 |
UT-021~022;API-033~036;UI-024~026 |
| §8 权限 |
按钮级 |
API-038~040;UI-028 |
| §10 提示语 |
各失败场景 |
API-017~026;UI-011、018~020 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 25、接口 41、UI 28;覆盖 R1~R6、耳标池、主从表 CRUD、Playwright+Chrome;前缀 ZCZX-SCJLDJ |
| 1.1 |
同步需求 v1.6:supplierEarTags 仅 A−B(B 全表巡查);保存 (A−B)−C;单元 28、接口 42、UI 29 |