交易市场管理 — 测试用例
依据:交易市场管理功能需求.md、交易市场管理技术方案.md
接口 Base Path:/livestock/tradeMarkets;鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块权限的账号已登录(livestock:tradeMarket:list|query|add|edit|remove)。biz_trade_market 宜预置(del_flag=0):
| 样本 |
名称 |
运营状态 |
要点 |
| M1 |
巴青县交易市场 |
正常(1) |
有照片;负责人「王五」 |
| M2 |
那曲集散市场 |
停业(2) |
无照片 |
| M3 |
测试注销市场 |
注销(3) |
名称模糊/状态筛选用 |
合法新增 Body 示例:marketName=巴青东站,detailAddress=西藏那曲市巴青县某某路88号,personInCharge=赵六,contactPhone=13900139000,operateStatus=1;照片先 POST /common/upload 再带 photoFileUrl、photoFilePath。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-JYSCGL-UT-001 |
参数校验 |
市场名称 |
单元测试 |
JUnit5 |
§3.5 |
无 |
空、11 字、10 字 trim |
空/超长失败;合法通过 |
| ZCZX-JYSCGL-UT-002 |
参数校验 |
详细地址 |
单元测试 |
JUnit5 |
§3.5 |
无 |
空、201 字、200 字 |
空/超长失败;200 通过 |
| ZCZX-JYSCGL-UT-003 |
参数校验 |
负责人 |
单元测试 |
JUnit5 |
§3.5 |
无 |
空、11 字、10 字 |
空/超长失败;通过 |
| ZCZX-JYSCGL-UT-004 |
参数校验 |
手机号 |
单元测试 |
JUnit5 |
§3.5 |
无 |
10 位、11 位合法、非法 |
非法失败;合法通过 |
| ZCZX-JYSCGL-UT-005 |
参数校验 |
运营状态 |
单元测试 |
JUnit5 |
§2.3 |
无 |
0、4、1/2/3 |
非法失败;1~3 通过 |
| ZCZX-JYSCGL-UT-006 |
唯一性 |
名称重复 |
单元测试 |
JUnit5+Mockito |
§3.5 |
已有 M1 名 |
validateUniqueName |
失败 |
| ZCZX-JYSCGL-UT-007 |
参数校验 |
照片成对 |
单元测试 |
JUnit5 |
§3.4 |
无 |
仅 url 无 path、均空、均填 |
仅 url 失败;均空/成对通过 |
| ZCZX-JYSCGL-UT-008 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
正常 |
Mock Mapper |
insert 合法行 |
del_flag=0;operate_status=1 默认 |
| ZCZX-JYSCGL-UT-009 |
Service |
逻辑删除 |
单元测试 |
JUnit5+Mockito |
§3.5 |
Mock |
remove(id) |
del_flag=2 |
| ZCZX-JYSCGL-UT-010 |
Service |
删除有关联 |
单元测试 |
JUnit5+Mockito |
§3.5 |
hasReference=true |
remove |
抛 ServiceException |
| ZCZX-JYSCGL-UT-011 |
Service |
删记录清照片 |
单元测试 |
JUnit5+Mockito |
§3.4 |
有 photo_path |
remove |
调用文件删除 |
| ZCZX-JYSCGL-UT-012 |
Mapper |
名称模糊 SQL |
单元测试 |
JUnit5 |
§3.6 |
无 |
检查 XML |
market_name LIKE CONCAT('%',…,'%') |
| ZCZX-JYSCGL-UT-013 |
Mapper |
状态精确 SQL |
单元测试 |
JUnit5 |
§3.6 |
无 |
检查 XML |
operate_status = #{operateStatus} |
| ZCZX-JYSCGL-UT-014 |
Mapper |
列表排序 |
单元测试 |
JUnit5 |
§3.1 |
无 |
检查 XML |
create_time DESC, id DESC |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-JYSCGL-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman |
§3.1 |
有 M1~M3 |
GET /list |
code=200;含 operateStatusName;时间倒序 |
| ZCZX-JYSCGL-API-002 |
列表 |
名称模糊 |
接口测试 |
Postman |
§2.6 |
有 M1 |
marketName=交易 |
含 M1 |
| ZCZX-JYSCGL-API-003 |
列表 |
状态精确 |
接口测试 |
Postman |
§2.6 |
有 M2 停业 |
operateStatus=2 |
仅含停业行 |
| ZCZX-JYSCGL-API-004 |
列表 |
组合筛选 |
接口测试 |
Postman |
§2.6 |
已登录 |
marketName=测试+operateStatus=3 |
同时满足 |
| ZCZX-JYSCGL-API-005 |
列表 |
模糊无匹配 |
接口测试 |
Postman |
§2.6 |
已登录 |
marketName=不存在xyz |
rows 为空 |
| ZCZX-JYSCGL-API-006 |
列表 |
不含已删除 |
接口测试 |
Postman |
逻辑删除 |
id 已删 |
GET /list |
无该 id |
| ZCZX-JYSCGL-API-007 |
新增 |
完整含照片 |
接口测试 |
Postman |
§5.1 |
已上传图片 |
POST 合法 Body+照片字段 |
code=200 |
| ZCZX-JYSCGL-API-008 |
新增 |
无照片默认正常 |
接口测试 |
Postman |
§5.1 |
已登录 |
POST 无照片字段 |
成功;operateStatus=1 |
| ZCZX-JYSCGL-API-009 |
新增 |
缺必填 |
接口测试 |
Postman |
§5.1.4 |
已登录 |
缺 marketName 或手机 |
失败 |
| ZCZX-JYSCGL-API-010 |
新增 |
名称超长 |
接口测试 |
Postman |
§5.1 |
已登录 |
marketName 11 字 |
失败 |
| ZCZX-JYSCGL-API-011 |
新增 |
名称重复 |
接口测试 |
Postman |
§5.1.4 |
已有 M1 名 |
POST 同名 |
失败;msg 含「市场名称已存在」 |
| ZCZX-JYSCGL-API-012 |
新增 |
手机号非法 |
接口测试 |
Postman |
§2.4 |
已登录 |
contactPhone=123 |
失败 |
| ZCZX-JYSCGL-API-013 |
新增 |
状态非法 |
接口测试 |
Postman |
§3.5 |
已登录 |
operateStatus=9 |
失败 |
| ZCZX-JYSCGL-API-014 |
新增 |
地址超长 |
接口测试 |
Postman |
§5.1 |
已登录 |
detailAddress 201 字 |
失败 |
| ZCZX-JYSCGL-API-015 |
详情 |
有效 id |
接口测试 |
Postman |
§5.4 |
有 M1 |
GET /{id} |
含全字段及照片 URL |
| ZCZX-JYSCGL-API-016 |
详情 |
无效/已删 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在/已删 |
失败或空 data |
| ZCZX-JYSCGL-API-017 |
修改 |
改地址负责人 |
接口测试 |
Postman |
§5.3 |
有 M2 |
PUT 改 detailAddress |
成功 |
| ZCZX-JYSCGL-API-018 |
修改 |
改运营状态 |
接口测试 |
Postman |
§5.3 |
M1 正常 |
PUT operateStatus=2 |
详情为停业 |
| ZCZX-JYSCGL-API-019 |
修改 |
换照片 |
接口测试 |
Postman |
§3.4 |
M2 无图 |
PUT 新 url/path |
成功;旧文件已删 |
| ZCZX-JYSCGL-API-020 |
修改 |
清除照片 |
接口测试 |
Postman |
§5.3 |
M1 有图 |
PUT 照片字段空 |
成功;详情无图 |
| ZCZX-JYSCGL-API-021 |
修改 |
不存在 id |
接口测试 |
Postman |
异常 |
已登录 |
伪造 id PUT |
失败 |
| ZCZX-JYSCGL-API-022 |
删除 |
单条逻辑删 |
接口测试 |
Postman |
§5.5 |
无关联新行 |
DELETE /{id} |
成功;列表无 |
| ZCZX-JYSCGL-API-023 |
删除 |
有关联拒绝 |
接口测试 |
Postman |
§5.5 |
预置有关联 |
DELETE |
失败;msg 含关联提示 |
| ZCZX-JYSCGL-API-024 |
删除 |
重复删除 |
接口测试 |
Postman |
幂等 |
已删 id |
再次 DELETE |
失败或不存在 |
| ZCZX-JYSCGL-API-025 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§4 |
已登录 |
POST→list→GET→PUT→DELETE |
每步 code=200 |
| ZCZX-JYSCGL-API-026 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET /list |
401 或统一未登录 |
| ZCZX-JYSCGL-API-027 |
权限 |
无新增权限 |
接口测试 |
Postman |
§6 |
仅 list |
POST |
无权限失败 |
| ZCZX-JYSCGL-API-028 |
权限 |
无删除权限 |
接口测试 |
Postman |
§6 |
无 remove |
DELETE |
无权限失败 |
| ZCZX-JYSCGL-API-029 |
响应 |
失败可读 |
接口测试 |
Postman |
§8 |
已登录 |
触发重复名、手机错、缺地址 |
msg 可区分 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-JYSCGL-UI-001 |
列表 |
默认展示 |
UI 测试 |
Playwright+Chrome |
§5.2.3 |
已登录;有数据 |
进入「交易市场管理」 |
含名称、地址、负责人、电话、状态、操作;无地图标点 |
| ZCZX-JYSCGL-UI-002 |
列表 |
名称模糊筛选 |
UI 测试 |
Playwright+Chrome |
§2.6 |
有 M1 |
市场名称填「交易」→搜索 |
含 M1 |
| ZCZX-JYSCGL-UI-003 |
列表 |
状态筛选 |
UI 测试 |
Playwright+Chrome |
§2.6 |
有 M2 停业 |
运营状态选「停业」→搜索 |
仅停业行 |
| ZCZX-JYSCGL-UI-004 |
列表 |
重置 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已筛选 |
搜索→重置 |
条件清空;列表恢复 |
| ZCZX-JYSCGL-UI-005 |
新增 |
必填与默认状态 |
UI 测试 |
Playwright+Chrome |
§5.1 |
有 add |
新增→填必填→确定 |
成功;运营状态默认「正常」 |
| ZCZX-JYSCGL-UI-006 |
新增 |
上传照片 |
UI 测试 |
Playwright+Chrome |
§2.3 |
有合法 jpg≤10M |
新增→上传照片→保存 |
列表/详情可见图 |
| ZCZX-JYSCGL-UI-007 |
新增 |
缺必填校验 |
UI 测试 |
Playwright+Chrome |
§5.1.4 |
新增 |
留空名称或手机→确定 |
校验失败;弹窗不关闭 |
| ZCZX-JYSCGL-UI-008 |
新增 |
名称超 10 字 |
UI 测试 |
Playwright+Chrome |
§5.1 |
新增 |
名称超 10 字 |
无法输入或保存失败 |
| ZCZX-JYSCGL-UI-009 |
新增 |
取消 |
UI 测试 |
Playwright+Chrome |
§5.1.3 |
新增 |
填一半→取消 |
无新行 |
| ZCZX-JYSCGL-UI-010 |
新增 |
照片格式/大小 |
UI 测试 |
Playwright+Chrome |
§2.3 |
新增 |
选非 jpg/png 或 >10M 文件 |
即时提示;不上传 |
| ZCZX-JYSCGL-UI-011 |
详情 |
只读含照片 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有 M1 |
查看 |
只读;照片可预览;含审计 |
| ZCZX-JYSCGL-UI-012 |
编辑 |
改运营状态 |
UI 测试 |
Playwright+Chrome |
§5.3 |
M1 正常 |
改「停业」→保存 |
列表显示停业 |
| ZCZX-JYSCGL-UI-013 |
编辑 |
更换照片 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有图市场 |
编辑→换图→保存 |
详情为新图 |
| ZCZX-JYSCGL-UI-014 |
删除 |
确认删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
无关联行 |
删除→确认(含市场名) |
行消失 |
| ZCZX-JYSCGL-UI-015 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意行 |
删除→取消 |
行仍在 |
| ZCZX-JYSCGL-UI-016 |
端到端 |
全流程 |
UI 集成 |
Playwright+Chrome |
§4 |
权限齐备 |
新增→名/状态筛选→看→改→删 |
无报错 |
| ZCZX-JYSCGL-UI-017 |
权限 |
只读角色 |
UI 测试 |
Playwright+Chrome |
§6 |
仅 list/query |
进入模块 |
无新增/编辑/删除 |
| ZCZX-JYSCGL-UI-018 |
详情 |
从详情编辑 |
UI 测试 |
Playwright+Chrome |
§5.4 |
查看 M1 |
点「编辑」 |
进入编辑弹窗 |
| ZCZX-JYSCGL-UI-019 |
列表 |
地图标点不做 |
UI 测试 |
Playwright+Chrome |
§5.6 |
有数据行 |
查看操作列 |
无「地图标点」或置灰暂未开放 |
| ZCZX-JYSCGL-UI-020 |
列表 |
电话脱敏 |
UI 测试 |
Playwright+Chrome |
§5.2.3 |
有 M1 完整手机 |
查看列表电话列 |
按项目规范脱敏(如 138****8000) |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chrome。
- 配置:
use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用登录态。
- 路由:
page.goto('/livestock/tradeMarket')(以菜单 component 为准)。
- 筛选:
page.getByLabel('市场名称').fill('交易');page.getByLabel('运营状态').click() 后选「停业」。
- 上传:在新增弹窗内
input[type=file],仅 image/jpeg、image/png;超 10MB 应被 before-upload 拦截。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-008 |
API-007~008、015、017~019、025 |
UI-005~006、011~013、016 |
| 异常流程 |
UT-001~005 |
API-009~013、014、016、021、023~024 |
UI-007~010、014~015 |
| 业务约束 |
UT-006~007 |
API-002~005、011、018 |
UI-002~004、008 |
| 运营状态 |
UT-005 |
API-003、013、018 |
UI-003、005、012 |
| 照片 |
UT-007、011 |
API-007~008、019~020 |
UI-006、010~011、013 |
| 逻辑删除 |
UT-009 |
API-006、022~024 |
UI-014 |
| 地图不做 |
— |
— |
UI-001、019 |
| 权限/鉴权 |
— |
API-026~028 |
UI-017 |
| 脱敏/提示 |
— |
API-029 |
UI-020 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 新增 |
字段、照片、默认正常 |
UT-001~008;API-007~014;UI-005~010 |
| §5.2 列表 |
名称模糊+状态精确 |
UT-012~013;API-001~006;UI-001~004、020 |
| §5.3 修改 |
全字段可改 |
API-017~021;UI-012~013、018 |
| §5.4 详情 |
只读 |
API-015~016;UI-011、018 |
| §5.5 删除 |
逻辑删、二次确认 |
UT-009~011;API-022~024;UI-014~015 |
| §2.2 运营状态 |
三档 |
UT-005;API-003、013、018;UI-003、005、012 |
| §5.6 地图 |
本期不做 |
UI-001、019 |
| §6 权限 |
按钮级 |
API-026~028;UI-017 |
| §8 业务提示 |
可读 msg |
API-011、029;UI-007、010 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 14、接口 29、UI 20;覆盖 CRUD、双维筛选、照片、运营状态;无地图标点;Playwright+Chrome;前缀 ZCZX-JYSCGL |