店铺管理 — 测试用例
依据: 《店铺管理功能需求.md》v1.3.4、《店铺管理技术方案.md》v1.2.3
范围: 平台管理端 店铺管理(列表、添加、编辑、店铺账号管理、删除)及 IShopFacade 对外契约;商家端 /agri/seller/shop 资料维护(§8.4)
排除: 店铺设置(见《店铺设置测试用例.md》)、商家端完整登录与 shop_id 切换、子管理员 CRUD、会员体系;商品上架/审核、分类维护的独立用例(删店仅验证商品 Facade 阻断条件);C 端下单 E2E 仅通过 isShopOpenForOrder 单元/接口契约验证,不展开用户商城页面
环境: RuoYi v3.9.2;接口基路径 /agri/shop;选商户复用 /agri/merchant/selectList、openShopCheck
用例编号说明
| 前缀 |
类型 |
工具 |
| SHP-UT-xxx |
单元测试 |
JUnit 5 + Mockito |
| SHP-API-xxx |
接口测试 |
Apifox / REST Assured + 平台 Token |
| SHP-UI-xxx |
界面测试 |
Playwright(Chromium/Chrome) |
一、单元测试
SHP-UT-001 首家店创建 insert 账号与店铺同事务
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
createShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit + Mockito |
| 测试目的 |
验证首家店新建 biz_merchant_account + biz_shop |
| 前置条件 |
商户无账号行;checkOpenShop 通过 |
| 测试步骤 |
createShop(dto) 含 password |
| 预期结果 |
插入 account 与 shop;shop_status=0 |
SHP-UT-002 创建店铺同事务 incrementShopCount
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
createShop 事务 |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §7.5 与商户 shop_count 回写 |
| 前置条件 |
Mock IMerchantShopFacade |
| 测试步骤 |
创建成功 |
| 预期结果 |
同一 @Transactional 内调用 incrementShopCount(merchantId) 一次 |
SHP-UT-003 非首家店不新建账号行
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
createShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证同商户多店共用账号 |
| 前置条件 |
商户已有 account 与 1 家店 |
| 测试步骤 |
第 2 家店 loginName 与现有一致,password=null |
| 预期结果 |
仅 insert biz_shop;account 表行数不变 |
SHP-UT-004 非首家店登录名不一致阻断
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
createShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S4/S5 |
| 前置条件 |
已有账号 login=A |
| 测试步骤 |
第 2 家店传 login=B |
| 预期结果 |
抛错;msg「同一商户下店铺须使用相同经营账号」 |
SHP-UT-005 登录名全平台唯一校验
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
账号校验 |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 login_name 唯一 |
| 前置条件 |
其他商户已占用手机号 X |
| 测试步骤 |
首家店使用 X 作为 loginName |
| 预期结果 |
失败;「登录名已存在」 |
SHP-UT-006 店名未删除范围内唯一
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
店名校验 |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S8 |
| 前置条件 |
未删除店名「测试店」已存在 |
| 测试步骤 |
新增同名店 |
| 预期结果 |
失败;「店铺名称已存在」 |
SHP-UT-007 checkOpenShop 经营未完善阻断
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
IMerchantFacade |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit + Mockito |
| 测试目的 |
验证 S1 开店前置 |
| 前置条件 |
biz_complete=0 |
| 测试步骤 |
createShop 前调 checkOpenShop |
| 预期结果 |
不创建;reason 经营信息未完善 |
SHP-UT-008 不设单商户开店数量上限
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
createShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S2 |
| 前置条件 |
商户已有 10 家店;经营完整、认证正常 |
| 测试步骤 |
继续 createShop |
| 预期结果 |
成功;不因 shop_count 拒绝 |
SHP-UT-009 编辑 UPDATE 排除 merchant_id
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S7 |
| 前置条件 |
shop 绑定 merchantId=1 |
| 测试步骤 |
PUT 体传 merchantId=2 |
| 预期结果 |
库中仍为 1 |
SHP-UT-010 开业→停业 confirm=false 不落库
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S12 两步确认 |
| 前置条件 |
shop_status=0 |
| 测试步骤 |
shopStatus=1, confirm=false |
| 预期结果 |
needConfirm=true;DB 仍为开业 |
SHP-UT-011 开业→停业 confirm=true 持久化
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证停业保存 |
| 前置条件 |
开业店铺 |
| 测试步骤 |
shopStatus=1, confirm=true |
| 预期结果 |
shop_status=1;不触发商品状态 UPDATE |
SHP-UT-012 停业→开业无需 confirm
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §3.5 |
| 前置条件 |
shop_status=1 |
| 测试步骤 |
shopStatus=0 无 confirm |
| 预期结果 |
直接成功为开业 |
SHP-UT-013 isShopOpenForOrder 停业返回 false
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
IShopFacade |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S13 契约 |
| 前置条件 |
shop_status=1,del_flag=0 |
| 测试步骤 |
isShopOpenForOrder(shopId) |
| 预期结果 |
false |
SHP-UT-014 isShopOpenForOrder 逻辑删除返回 false
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
IShopFacade |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证删店后不可下单 |
| 前置条件 |
del_flag=2 |
| 测试步骤 |
isShopOpenForOrder |
| 预期结果 |
false |
SHP-UT-015 删店预检-存在出售中商品
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
deleteCheck |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit + Mockito |
| 测试目的 |
验证 §11.2 商品条件 |
| 前置条件 |
IGoodsFacade.hasBlockingGoods=true |
| 测试步骤 |
deleteCheck(shopId) |
| 预期结果 |
canDelete=false;含下架商品提示 |
SHP-UT-016 删店预检-仅已下架商品可删
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
deleteCheck |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证不要求零商品 |
| 前置条件 |
仅有 status=4 商品;无订单 |
| 测试步骤 |
deleteCheck |
| 预期结果 |
canDelete=true |
SHP-UT-017 删店成功 decrementShopCount 且保留账号
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
deleteShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §11.5 末店删账号保留 |
| 前置条件 |
商户仅 1 店;预检通过 |
| 测试步骤 |
deleteShop |
| 预期结果 |
shop del_flag=2;decrementShopCount;biz_merchant_account 仍 del_flag=0 |
SHP-UT-018 批量删除任一条失败整批不删
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
批量删除 |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §3.8 |
| 前置条件 |
ID1 可删;ID2 有阻塞商品 |
| 测试步骤 |
DELETE 两 ID |
| 预期结果 |
失败;两条 shop 均未逻辑删除 |
SHP-UT-019 改登录名 confirm=false 返回 needConfirm
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateAccount |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §7.3 |
| 前置条件 |
有账号 |
| 测试步骤 |
新 loginName,confirm=false |
| 预期结果 |
needConfirm=true;confirmMessage 含「同步至该商户下全部店铺」 |
SHP-UT-020 改登录名后同商户多店展示一致
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateAccount |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 S5 同步 |
| 前置条件 |
同商户 2 店;confirm=true |
| 测试步骤 |
更新 account.login_name |
| 预期结果 |
account 表 1 行更新;列表 JOIN 两店展示新登录名 |
SHP-UT-021 重置密码 BCrypt 存储
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateAccount |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证密码加密 |
| 前置条件 |
— |
| 测试步骤 |
password=新密码 保存 |
| 预期结果 |
库中 password 为 BCrypt;非明文 |
SHP-UT-022 ~ SHP-UT-024 店铺设置(已迁出)
废止: 逐店 settings 及 biz_shop 策略字段已删除。相关用例见 《店铺设置测试用例.md》(SSS-UT-* / SSS-API-*)。
SHP-UT-025 首家店 password 必填
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
createShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §7.6 |
| 前置条件 |
无账号 |
| 测试步骤 |
password=null |
| 预期结果 |
校验失败 |
SHP-UT-026 冻结商户 checkOpenShop 失败
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
IMerchantFacade |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证 §13.2 不可新开店 |
| 前置条件 |
cert_status=1 |
| 测试步骤 |
checkOpenShop |
| 预期结果 |
allowed=false;商户已冻结 |
SHP-UT-027 编辑店名排除自身唯一
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
updateShop |
| 测试类型 |
单元测试 |
| 测试工具 |
JUnit |
| 测试目的 |
验证编辑店名规则 |
| 前置条件 |
店 A 名称「店1」 |
| 测试步骤 |
A 编辑仍用「店1」 |
| 预期结果 |
保存成功 |
二、接口测试
SHP-API-001 列表分页与默认排序
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /list |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证列表基础 |
| 前置条件 |
agri:shop:list;≥2 未删店铺 |
| 测试步骤 |
GET /agri/shop/list?pageNum=1&pageSize=10 |
| 预期结果 |
code=200;create_time 倒序;无 del_flag=2 |
SHP-API-002 关键词模糊检索
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /list |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 §5 关键词 |
| 前置条件 |
店名含「农资」 |
| 测试步骤 |
GET /list?keyword=农资 |
| 预期结果 |
命中店名/商户名/账号相关记录 |
SHP-API-003 按店铺状态筛选
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /list |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证状态筛选 |
| 前置条件 |
停业店存在 |
| 测试步骤 |
GET /list?shopStatus=1 |
| 预期结果 |
全部 shopStatus=1 |
SHP-API-004 按商户名称筛选(详情跳转)
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /list |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 §4.2 merchantName |
| 前置条件 |
某商户下有多店 |
| 测试步骤 |
GET /list?merchantName=张三农资 |
| 预期结果 |
均为该商户店铺 |
SHP-API-005 首家店添加成功
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证开店主流程 S3/S4 |
| 前置条件 |
经营完整正常商户;agri:shop:add;未占用店名/登录名 |
| 测试步骤 |
POST / 提交完整 body(含 password) |
| 预期结果 |
code=200;shopStatus=0;商户 shop_count+1;account 已建 |
SHP-API-006 同商户第二家店添加成功
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 §7.2 第二家店 |
| 前置条件 |
商户已有 1 店及账号 |
| 测试步骤 |
POST / 同 loginName,password=null(§7.2 样例) |
| 预期结果 |
成功;account 行数不变;shop_count 再 +1 |
SHP-API-007 添加缺少必填字段失败
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证必填 |
| 前置条件 |
— |
| 测试步骤 |
缺 shopPhone 或头像 |
| 预期结果 |
失败;无新店铺 |
SHP-API-008 店名重复失败
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 S8 |
| 前置条件 |
店名已存在 |
| 测试步骤 |
重复 shopName 提交 |
| 预期结果 |
「店铺名称已存在」 |
SHP-API-009 同商户登录名不一致失败
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 S4 |
| 前置条件 |
已有 login=13800138000 |
| 测试步骤 |
第 2 店传 13900139000 |
| 预期结果 |
「同一商户下店铺须使用相同经营账号」 |
SHP-API-010 商户经营未完善不可开店
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 S1 |
| 前置条件 |
biz_complete=0 商户 |
| 测试步骤 |
POST / |
| 预期结果 |
失败;「请先完善该商户的经营与结算信息」 |
SHP-API-011 冻结商户不可开店
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证商户状态阻断 |
| 前置条件 |
cert_status=1 |
| 测试步骤 |
POST / |
| 预期结果 |
失败;与 openShopCheck reason 一致 |
SHP-API-012 高 shop_count 商户仍可连续开店
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
POST / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 S2 无上限 |
| 前置条件 |
商户 shop_count≥5 且均可开店 |
| 测试步骤 |
再 POST / 新店 |
| 预期结果 |
成功 |
SHP-API-013 获取店铺详情
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /{shopId} |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证详情契约 |
| 前置条件 |
agri:shop:query |
| 测试步骤 |
GET /agri/shop/{id} |
| 预期结果 |
含店铺字段、merchantId/merchantName 只读、账号摘要、canDelete |
SHP-API-014 编辑店铺基础信息成功
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证编辑主流程 |
| 前置条件 |
开业店;agri:shop:edit |
| 测试步骤 |
修改 shopDesc、shopPhone;shopStatus 不变 |
| 预期结果 |
code=200;字段更新;商户认证不变 |
SHP-API-015 编辑传 merchantId 无效
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 S7 |
| 前置条件 |
shop 属 merchant 1 |
| 测试步骤 |
body 改 merchantId=2 |
| 预期结果 |
仍为 merchant 1 |
SHP-API-016 开业→停业两步确认
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 S12 |
| 前置条件 |
开业店 |
| 测试步骤 |
1. shopStatus=1, confirm=false 2. confirm=true |
| 预期结果 |
步骤1 needConfirm;步骤2 shop_status=1 |
SHP-API-017 停业→开业直接成功
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT / |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证停业恢复无需 confirm |
| 前置条件 |
停业店 |
| 测试步骤 |
shopStatus=0 保存 |
| 预期结果 |
直接开业 |
SHP-API-018 查询商户经营账号
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /merchant/{id}/account |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证账号管理查询 |
| 前置条件 |
同商户 2 店;agri:shop:account |
| 测试步骤 |
GET .../account |
| 预期结果 |
adminName、loginName 脱敏;shops 数组 2 条 |
SHP-API-019 修改管理员姓名与重置密码
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT /merchant/{id}/account |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证账号维护 |
| 前置条件 |
有账号 |
| 测试步骤 |
PUT 改 adminName、传新 password |
| 预期结果 |
成功;登录可用新密码(若商家端已实现) |
SHP-API-020 修改登录名两步确认
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT /merchant/{id}/account |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 §7.3 |
| 前置条件 |
新登录名未占用 |
| 测试步骤 |
confirm=false 再 confirm=true |
| 预期结果 |
预检含同步文案;确认后 login 更新;两店列表展示一致 |
SHP-API-021 登录名重复失败
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
PUT /merchant/{id}/account |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证平台唯一 |
| 前置条件 |
其他商户已用号码 X |
| 测试步骤 |
改为 X |
| 预期结果 |
「登录名已存在」 |
SHP-API-022 ~ SHP-API-024 店铺设置(已迁出)
废止: GET/PUT /{id}/settings 已移除。见 《店铺设置测试用例.md》 SSS-API-001~004。
SHP-API-025 删除预检通过
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /{id}/deleteCheck |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证删店正向 |
| 前置条件 |
无出售中/待审核;无未完成订单 |
| 测试步骤 |
GET .../deleteCheck |
| 预期结果 |
canDelete=true |
SHP-API-026 删除预检-阻塞商品
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /{id}/deleteCheck |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 §11.2 |
| 前置条件 |
存在 goods_status 为 1 或 2 的商品 |
| 测试步骤 |
deleteCheck |
| 预期结果 |
canDelete=false;含商品处理提示 |
SHP-API-027 逻辑删除成功 shop_count 减 1
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
DELETE /{ids} |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证删店主流程 S10 |
| 前置条件 |
SHP-API-025 通过;agri:shop:remove |
| 测试步骤 |
DELETE /agri/shop/{id} |
| 预期结果 |
列表不可见;del_flag=2;商户 shop_count-1 |
SHP-API-028 批量删除部分失败整批取消
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
DELETE /{ids} |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证批量策略 |
| 前置条件 |
一可删一不可删 |
| 测试步骤 |
DELETE id1,id2 |
| 预期结果 |
「部分店铺不满足删除条件」;均未删除 |
SHP-API-029 列表经营账号脱敏
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /list |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 §7.4 |
| 前置条件 |
login=13800138000 |
| 测试步骤 |
查列表 accountLoginName |
| 预期结果 |
形如 138****8000 |
SHP-API-030 无 add 权限新增 403
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
权限 |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证 @PreAuthorize |
| 前置条件 |
Token 无 agri:shop:add |
| 测试步骤 |
POST / |
| 预期结果 |
403;无新数据 |
SHP-API-031 GET merchant account 供添加第 2 店带出
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /merchant/{id}/account |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证添加页带出账号 |
| 前置条件 |
商户已有店 |
| 测试步骤 |
添加前调用 account 接口 |
| 预期结果 |
返回现有 loginName、adminName 供表单默认 |
SHP-API-032 复用 merchant selectList 仅完整商户
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
GET /agri/merchant/selectList |
| 测试类型 |
接口测试 |
| 测试工具 |
Apifox |
| 测试目的 |
验证添加页选商户 S1 |
| 前置条件 |
完整/不完整/冻结商户各一 |
| 测试步骤 |
GET /agri/merchant/selectList |
| 预期结果 |
仅含经营完整且认证正常商户 |
三、界面测试(Playwright)
通用前置: 平台管理员已登录;Chromium;菜单「农资管理 → 店铺管理」(路由以实现为准)。
SHP-UI-001 进入店铺列表页
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
列表加载 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright (Chrome) |
| 测试目的 |
验证菜单与列表列 |
| 前置条件 |
agri:shop:list |
| 测试步骤 |
登录 → 打开店铺管理 |
| 预期结果 |
展示店名、头像、商户名、状态、经营账号、操作;分页默认 |
SHP-UI-002 关键词检索店铺
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
高级检索 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §5 关键词 |
| 前置条件 |
存在店名含「测试店」 |
| 测试步骤 |
输入关键词 → 查询 |
| 预期结果 |
列表仅匹配店铺/商户/账号相关行 |
SHP-UI-003 按开业/停业筛选
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
高级检索 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证状态筛选 |
| 前置条件 |
有停业店 |
| 测试步骤 |
选「停业」→ 查询 |
| 预期结果 |
列表均为停业状态 |
SHP-UI-004 清空检索恢复默认列表
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
高级检索 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证清空条件 |
| 前置条件 |
已筛选缩小结果 |
| 测试步骤 |
点重置/清空 → 查询 |
| 预期结果 |
恢复全量未删店铺列表 |
SHP-UI-005 添加首家店-完整表单提交
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
添加店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证开店 UI 主流程 |
| 前置条件 |
可选完整商户;有 add 权限 |
| 测试步骤 |
新增 → 选商户 → 填店名/头像/电话/账号密码 → 提交 |
| 预期结果 |
成功;列表新店状态=开业;商户店铺数+1 |
SHP-UI-006 添加第二家店默认带出经营账号
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
添加店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §6.3 带出 |
| 前置条件 |
商户已有 1 店 |
| 测试步骤 |
选同商户 → 观察账号区 |
| 预期结果 |
登录名、管理员姓名自动填充;密码可空或可选重置 |
SHP-UI-007 添加必填项为空校验
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
添加店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证前端校验 |
| 前置条件 |
打开新增 |
| 测试步骤 |
不填商家电话直接提交 |
| 预期结果 |
表单项错误提示;不提交成功 |
SHP-UI-008 选经营未完善商户不可选或提交失败
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
添加店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 S1 UI |
| 前置条件 |
存在待完善商户 |
| 测试步骤 |
打开商户下拉/搜索 |
| 预期结果 |
不出现该商户;或选后提交提示完善经营信息 |
SHP-UI-009 编辑页商户与经营账号只读
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
编辑店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §8.2 |
| 前置条件 |
有店铺 |
| 测试步骤 |
点编辑 |
| 预期结果 |
所属商户、经营账号不可改 |
SHP-UI-010 编辑开业→停业二次确认
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
编辑店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 S12 UI |
| 前置条件 |
开业店 |
| 测试步骤 |
状态改停业 → 保存 |
| 预期结果 |
弹窗含「用户端将无法下单」;确认后列表为停业 |
SHP-UI-011 停业店仍可编辑/账号管理
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
列表操作 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §7.2 |
| 前置条件 |
停业店 |
| 测试步骤 |
检查操作列按钮 |
| 预期结果 |
编辑、店铺账号管理可用;无 逐店「店铺设置」 |
SHP-UI-012 店铺账号管理-展示下属店铺
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
店铺账号管理 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §9.2 |
| 前置条件 |
同商户 2 店 |
| 测试步骤 |
任一家店点「店铺账号管理」 |
| 预期结果 |
展示管理员、脱敏登录名、下属 2 店名称与状态 |
SHP-UI-013 改登录名二次确认同步文案
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
店铺账号管理 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §9.4 |
| 前置条件 |
有 account 权限 |
| 测试步骤 |
改登录名 → 保存 |
| 预期结果 |
确认框含「同步至该商户下全部店铺」;成功后两店列表账号一致 |
SHP-UI-014 ~ SHP-UI-015 店铺设置(已迁出)
见 《店铺设置测试用例.md》 SSS-UI-*(独立菜单「店铺设置」)。
SHP-UI-016 删除店铺二次确认
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
删除店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §11.3 |
| 前置条件 |
满足删店条件 |
| 测试步骤 |
删除 → 确认「不可恢复经营」 |
| 预期结果 |
列表消失;成功提示 |
SHP-UI-017 有出售中商品时删除失败提示
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
删除店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证删店商品约束 |
| 前置条件 |
店内有出售中商品 |
| 测试步骤 |
点删除 |
| 预期结果 |
提示「请先下架或处理完商品后再删除店铺」 |
SHP-UI-018 无 add 权限隐藏新增按钮
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
权限 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证按钮权限 |
| 前置条件 |
角色仅 list+query |
| 测试步骤 |
进入列表 |
| 预期结果 |
无「新增」按钮 |
SHP-UI-019 列表无会员相关字段
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
列表展示 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 S6 |
| 前置条件 |
打开列表 |
| 测试步骤 |
检查表头 |
| 预期结果 |
无会员名称/会员绑定列;为经营账号展示 |
SHP-UI-020 从商户详情跳转带 merchantName 筛选
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
协作跳转 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §13.3 |
| 前置条件 |
商户详情有「查看店铺」;该商户有多店 |
| 测试步骤 |
商户详情点击跳转 |
| 预期结果 |
打开店铺列表且检索框带商户名;仅显示该商户店铺 |
SHP-UI-021 生成随机密码(若 UI 提供)
| 要素 |
内容 |
| 测试模块 |
店铺管理 |
| 测试项 |
添加店铺 |
| 测试类型 |
界面测试 |
| 测试工具 |
Playwright |
| 测试目的 |
验证 §6.3 随机密码 |
| 前置条件 |
首家店新增页有「生成随机密码」 |
| 测试步骤 |
点击生成 |
| 预期结果 |
密码框填入符合长度要求的随机串 |
SHP-UI-022 子管理员上限输入非法值(已迁出)
见 《店铺设置测试用例.md》 SSS-API-004 / SSS-UI-*。
SHP-UT-027 商家端改店名更新 biz_shop
| 要素 |
内容 |
| 用例编号 |
SHP-UT-027 |
| 测试项 |
updateSellerShopProfile |
| 测试目的 |
验证草稿第 7 条、§8.4 同源 |
| 步骤 |
updateSellerShopProfile(shopId, dto) |
| 预期结果 |
shopMapper.update 写入新名称/头像/电话;平台 list SQL 读同一行 |
SHP-API-033 GET /agri/seller/shop
| 要素 |
内容 |
| 用例编号 |
SHP-API-033 |
| 测试项 |
商家端资料查询 |
| 前置条件 |
X-Shop-Id;agri:seller:shop:query |
| 预期结果 |
200;返回当前店名称/头像/电话 |
SHP-API-034 PUT /agri/seller/shop 成功后平台 list 一致
| 要素 |
内容 |
| 用例编号 |
SHP-API-034 |
| 测试项 |
商家端改资料 |
| 步骤 |
PUT 改 shopName → GET /agri/shop/list |
| 预期结果 |
列表展示新名称 |
四、用例统计
| 类型 |
数量 |
编号段 |
| 单元测试 |
27 |
SHP-UT-001~027 |
| 接口测试 |
32 |
SHP-API-001~032 |
| 界面测试 |
22 |
SHP-UI-001~022 |
| 合计 |
81 |
— |
五、业务规则覆盖索引
| 规则 |
对应用例(示例) |
| S1 |
SHP-UT-007, SHP-API-010, SHP-UI-008, SHP-API-032 |
| S2 |
SHP-UT-008, SHP-API-012 |
| S3 |
SHP-UT-001, SHP-API-005 |
| S4/S5 |
SHP-UT-003/004/019/020, SHP-API-006/009, SHP-UI-006/013 |
| S6 |
SHP-UI-019 |
| S7 |
SHP-UT-009, SHP-API-015, SHP-UI-009 |
| S8 |
SHP-UT-006, SHP-API-008 |
| S9 |
SHP-UT-011(无商品级联) |
| S10 |
SHP-UT-015~018, SHP-API-025~028, SHP-UI-016/017 |
| S11 |
SHP-UT-022/024, SHP-API-022/023, SHP-UI-014/015 |
| S12 |
SHP-UT-010/011, SHP-API-016, SHP-UI-010 |
| S13 |
SHP-UT-013/014(Facade 契约) |
六、测试数据建议
| 数据 |
用途 |
| 经营完整 + 认证正常商户 |
开店、selectList |
| 经营未完善 / 冻结商户 |
开店阻断 |
| 首家店 + 同商户第二店 |
账号一致、password null |
| 多店商户(≥5) |
S2 无上限 |
| 开业/停业店各一 |
状态编辑、Facade |
| 含出售中/待审核商品的店 |
删店阻断 |
| 仅已下架商品的店 |
删店正向 |
| 未占用店名、登录手机号 |
唯一性正向 |
文档版本:v1.0 · 关联《店铺管理功能需求.md》v1.3.2、《店铺管理技术方案.md》v1.2.1(biz_merchant_account)