巴青农资商城

订单管理测试用例.md 15KB

订单管理 — 测试用例

依据: 《订单管理功能需求.md》v1.0.1、《订单管理技术方案.md》v1.0
关联: 《会员管理技术方案.md》v1.0、《店铺管理测试用例.md》(删店 O10)、《商品管理测试用例.md》(库存)
范围: 平台端 /agri/order 列表/详情/发货/物流/送达/关闭/删除;IOrderFacade(O10);定时关单 O8;C 端 /api/order 主路径(create/pay/confirmReceive)
排除: 分批发货拆单、支付渠道对接、退款原路、Excel 批量发货、商家端订单后台、发票售后
环境: RuoYi v3.9.2;平台 Token;sys_config.order.pay.timeout.minutes 可测环境设为 2 便于 O8


用例编号说明

前缀 类型 工具
ORD-UT-xxx 单元测试 JUnit 5 + Mockito
ORD-API-xxx 接口测试 Apifox / REST Assured
ORD-UI-xxx 界面测试 Playwright(Chromium)
ORD-JOB-xxx 定时任务 单元/集成触发 Job

一、单元测试

ORD-UT-001 支付成功待支付→待发货并扣库存

要素 内容
测试项 paySuccess
测试目的 验证 O4
前置条件 订单 status=0;Mock IGoodsFacade.deductStock 成功
测试步骤 paySuccess(orderId)
预期结果 status=1;pay_status=1;pay_time 非空;每行 deductStock 调用一次

ORD-UT-002 支付失败不扣库存

要素 内容
测试项 paySuccess
测试目的 验证扣库存仅在成功路径
前置条件 deductStock 抛异常
测试步骤 paySuccess
预期结果 事务回滚;status 仍为 0

ORD-UT-003 整单发货待发货→已发货

要素 内容
测试项 ship
测试目的 验证 O5
前置条件 status=1
测试步骤 ship(dto) deliveryType=1
预期结果 status=2;写入 logistics 字段;插入 trace_type=1; 调用 deductStock

ORD-UT-004 非待发货不可发货

要素 内容
测试项 ship
测试目的 状态机
前置条件 status=0/2/3/4
测试步骤 ship
预期结果 失败;msg「当前状态不可发货」

ORD-UT-005 物流配送必填公司与单号

要素 内容
测试项 ship 校验
测试目的 验证 O15
前置条件 status=1
测试步骤 deliveryType=1,trackingNo 空
预期结果 失败

ORD-UT-006 商家配送必填车辆与配送员

要素 内容
测试项 ship 校验
测试目的 验证 O15
前置条件 status=1
测试步骤 deliveryType=2,courierName 空
预期结果 失败

ORD-UT-007 更新物流追加节点不改变主状态

要素 内容
测试项 addLogisticsTrace
测试目的 验证 O6
前置条件 status=2
测试步骤 连续两次 addLogisticsTrace
预期结果 status 仍为 2;trace 表 2 条 type=2

ORD-UT-008 登记送达不改为已完成

要素 内容
测试项 markDelivered
测试目的 验证 O7
前置条件 status=2
测试步骤 markDelivered
预期结果 status=2;trace_type=3 一条

ORD-UT-009 确认收货→已完成并刷新会员消费

要素 内容
测试项 confirmReceive
测试目的 验证 O7、O11
前置条件 status=2;Mock IMemberFacade
测试步骤 confirmReceive(orderId, memberId)
预期结果 status=3;finish_time 非空;trace_type=4;调用 refreshConsumption(memberId) 一次

ORD-UT-010 待发货关闭回滚库存

要素 内容
测试项 closeOrder
测试目的 验证 §10.1 库存回滚
前置条件 status=1,已支付
测试步骤 closeOrder(closeType=3)
预期结果 status=4;每 item 调用 restoreStock

ORD-UT-011 待支付关闭不回滚库存

要素 内容
测试项 closeOrder
测试目的 验证待支付无扣减
前置条件 status=0
测试步骤 closeOrder
预期结果 status=4; 调用 restoreStock

ORD-UT-012 仅已关闭可删除为已删除

要素 内容
测试项 deleteOrder
测试目的 验证 O9
前置条件 status=4 / status=1
测试步骤 分别 deleteOrder
预期结果 前者 status=5;后者失败

ORD-UT-013 hasUnfinishedOrdersByShop O10

要素 内容
测试项 IOrderFacade
测试目的 验证 O10
前置条件 店 A 存在 status=2 订单;店 B 仅 status=4
测试步骤 hasUnfinishedOrdersByShop
预期结果 店 A true;店 B false

ORD-UT-014 已关闭/已完成不算未完成

要素 内容
测试项 IOrderFacade
测试目的 验证 O10 边界
前置条件 仅 status=3、4、5
测试步骤 hasUnfinishedOrdersByShop
预期结果 false

ORD-UT-015 超时关单 Job

要素 内容
测试项 OrderPayTimeoutJob
测试目的 验证 O8
前置条件 status=0 且 pay_expire_time<now
测试步骤 执行 Job
预期结果 status=4;close_type=1

ORD-UT-016 未超时订单 Job 不关闭

要素 内容
测试项 OrderPayTimeoutJob
测试目的 验证 O8 边界
前置条件 pay_expire_time>now
测试步骤 执行 Job
预期结果 status 仍为 0

ORD-UT-017 pageOrdersByMember 强制 memberId

要素 内容
测试项 pageOrdersByMember
测试目的 验证 M9
前置条件 会员 1、2 各有订单
测试步骤 pageOrdersByMember(1, q)
预期结果 仅返回 member_id=1

ORD-UT-018 getOrderDetail 归属校验

要素 内容
测试项 getOrderDetail
测试目的 会员只读边界
前置条件 订单属会员 2
测试步骤 getOrderDetail(orderId, memberId=1)
预期结果 抛错;无权查看

ORD-UT-019 创建订单写入 pay_expire_time

要素 内容
测试项 createOrder
测试目的 验证 §5 定时关单字段
前置条件 timeout=1440 分钟
测试步骤 createOrder
预期结果 pay_expire_time = create_time + 1440min

ORD-UT-020 订单号生成唯一

要素 内容
测试项 generateOrderNo
测试目的 验证 O2
前置条件
测试步骤 连续生成 100 个
预期结果 无重复;格式 O+日期+序号

二、接口测试

ORD-API-001 列表默认排除已删除

要素 内容
测试项 GET /agri/order/list
测试目的 验证 §5.4
前置条件 存在 status=5 与 status=1 各一单
测试步骤 不传 orderStatus
预期结果 rows 不含 status=5

ORD-API-002 页签待支付筛选

要素 内容
测试项 GET /list?orderStatus=0
测试目的 验证页签
前置条件 多状态订单
测试步骤 orderStatus=0
预期结果 仅待支付

ORD-API-003 页签待发货/已发货/已完成/已关闭/已删除

要素 内容
测试项 GET /list
测试目的 验证 O3 页签
前置条件 各状态均有样本
测试步骤 orderStatus=1~5 各请求一次
预期结果 筛选正确

ORD-API-004 按订单编号检索

要素 内容
测试项 GET /list
测试目的 验证 O16
前置条件 已知 orderNo
测试步骤 orderNo 模糊
预期结果 命中目标单

ORD-API-005 按商品名称检索

要素 内容
测试项 GET /list
测试目的 验证 O16
前置条件 订单含商品名「尿素」
测试步骤 goodsName=尿素
预期结果 命中

ORD-API-006 按收货人手机号检索

要素 内容
测试项 GET /list
测试目的 验证 O16
前置条件
测试步骤 consigneeMobile
预期结果 命中

ORD-API-007 按会员 keyword 检索

要素 内容
测试项 GET /list
测试目的 扩展检索
前置条件 memberNickName 已知
测试步骤 memberKeyword
预期结果 命中

ORD-API-008 详情含明细与物流轴

要素 内容
测试项 GET /{orderId}
测试目的 验证 O14
前置条件 已发货且有多条 trace
测试步骤 GET 详情
预期结果 items、traceList 非空;trace 时间倒序

ORD-API-009 发货成功

要素 内容
测试项 POST /{id}/ship
测试目的 验证 §7
前置条件 status=1;权限 agri:order:ship
测试步骤 POST 合法物流 Body
预期结果 code=200;再查 status=2

ORD-API-010 更新物流

要素 内容
测试项 POST /{id}/logistics
测试目的 验证 §8
前置条件 status=2
测试步骤 POST content
预期结果 详情 trace 增加 type=2

ORD-API-011 登记送达

要素 内容
测试项 POST /{id}/delivered
测试目的 验证 §9.1
前置条件 status=2
测试步骤 POST
预期结果 status 仍为 2;trace type=3

ORD-API-012 运营关闭待发货

要素 内容
测试项 PUT /{id}/close
测试目的 验证 §10.1
前置条件 status=1 已支付
测试步骤 closeType=3
预期结果 status=4;商品库存已回滚(查 goods.stock)

ORD-API-013 删除已关闭订单

要素 内容
测试项 DELETE /{id}
测试目的 验证 O9
前置条件 status=4
测试步骤 DELETE
预期结果 status=5;默认列表不可见

ORD-API-014 非已关闭不可删除

要素 内容
测试项 DELETE /{id}
测试目的 验证 O9 负向
前置条件 status=1
测试步骤 DELETE
预期结果 失败

ORD-API-015 无权限发货 403

要素 内容
测试项 POST /ship
测试目的 权限
前置条件 仅 list 权限 Token
测试步骤 POST ship
预期结果 403

ORD-API-016 C 端创建订单

要素 内容
测试项 POST /api/order/create
测试目的 C 端主路径
前置条件 会员启用;店开业;商品出售中库存足
测试步骤 POST 下单
预期结果 status=0;有 items 快照;pay_expire_time 有值

ORD-API-017 C 端支付成功

要素 内容
测试项 POST /api/order/{id}/pay
测试目的 C 端支付
前置条件 status=0
测试步骤 pay
预期结果 status=1

ORD-API-018 C 端确认收货

要素 内容
测试项 POST /api/order/{id}/confirmReceive
测试目的 完成 + O11
前置条件 status=2;会员 Token
测试步骤 confirmReceive
预期结果 status=3;biz_member.order_count/total_amount 更新

ORD-API-019 已关闭订单不可再支付

要素 内容
测试项 POST /pay
测试目的 验证 §3.4 C 端
前置条件 status=4(超时关闭)
测试步骤 pay
预期结果 失败;订单已关闭

ORD-API-020 删店预检存在未完成订单

要素 内容
测试项 GET /agri/shop/{id}/deleteCheck
测试目的 跨模块 O10
前置条件 店下 status=0 订单
测试步骤 deleteCheck
预期结果 canDelete=false;含未完成订单文案

三、界面测试

ORD-UI-001 订单列表页签切换

要素 内容
测试项 列表 UI
测试工具 Playwright
测试步骤 登录平台 → 订单管理 → 点击「待发货」页签
预期结果 表格仅待发货;角标数量合理

ORD-UI-002 待发货展示去发货按钮

要素 内容
测试项 操作列
测试步骤 待发货行查看操作
预期结果 有「去发货」;无删除

ORD-UI-003 发货弹窗配送方式切换字段显隐

要素 内容
测试项 发货表单
测试步骤 打开发货 → 选物流/商家配送
预期结果 物流显示公司+单号;商家显示车辆+配送员

ORD-UI-004 发货成功状态变更

要素 内容
测试项 发货 E2E
前置条件 待发货样本单
测试步骤 填表提交发货
预期结果 提示成功;行状态变已发货

ORD-UI-005 详情物流时间轴倒序

要素 内容
测试项 详情
测试步骤 打开已发货单详情
预期结果 时间轴最新在上

ORD-UI-006 关闭二次确认

要素 内容
测试项 关闭
测试步骤 点击关闭
预期结果 确认框;可填原因

ORD-UI-007 已删除页签可见逻辑删除单

要素 内容
测试项 已删除
测试步骤 切换「已删除」页签
预期结果 可见 status=5 订单;只读

ORD-UI-008 列表手机号脱敏

要素 内容
测试项 脱敏
测试步骤 查看列表收货手机
预期结果 中间 4 位 *

四、定时任务测试

ORD-JOB-001 超时自动关闭 E2E

要素 内容
测试项 O8 集成
前置条件 timeout=2 分钟;创建待支付单并等待过期
测试步骤 触发 Job 或等待调度
预期结果 订单变已关闭;close_type=未支付超时

五、测试数据准备

数据 说明
会员 M1 status=0;用于下单
会员 M2 status=1 禁用;用于登录/下单阻断
店铺 S1 开业;S2 停业
商品 G1 出售中 stock=100
订单样本 各 status 0~5 至少 1 条
配置 order.pay.timeout.minutes 测试值

六、用例统计

类型 数量
单元测试 ORD-UT 20
接口测试 ORD-API 20
界面测试 ORD-UI 8
定时任务 ORD-JOB 1
合计 49

文档版本:v1.0 · 关联《订单管理功能需求.md》v1.0.1、《订单管理技术方案.md》v1.0