西藏巴青项目

供应商结算管理测试用例.md 20KB

供应商结算管理 — 测试用例

依据供应商结算管理功能需求.md(v1.1)、供应商结算管理技术方案.md(v1.0)
关联../交易订单管理/交易订单管理测试用例.md(结算单由订单「完成支付」生成)
接口 Base Path/tradeMarket/supplierSettlement;鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块权限的账号已登录(tradeMarket:supplierSettlement:list|query|settle)。宜复用交易订单测试样本并预置结算数据:

类型 样本 要点
供应商 S1 id=1 按头 fee_method=2fee_standard=10 与订单用例一致
供应商 S2 id=2 按额 fee_method=3,费率 1%+0.5% 快照校验用
供应商 S3 id=3 按户 fee_method=1 服务费=0
交易订单+结算 SS-PEND 订单已完成;settlement_status=0order_no 已知
交易订单+结算 SS-DONE settlement_status=1;已有 settle_voucher_url
交易订单 TO-PAY order_status=0;用于联调「支付→生成待结算」
凭证文件 V-OK test.jpg ≤10MB;V-BAD

完成结算 Body 示例

{
  "id": 1,
  "settleVoucherUrl": "http://localhost/profile/upload/2026/05/settle.jpg",
  "settleVoucherPath": "/profile/upload/2026/05/settle.jpg"
}

界面(UI)测试Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。组件路径:tradeMarket/supplierSettlement/index

自动化对照SettlementNoGeneratorSettlementOnPayServiceSettlementFeeCalculator(订单包已有);BizSupplierSettlement*(实现后 JUnit5 / MockMvc)。本期后端结算 Controller 待实现,API/UI 用例按技术方案编写。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-GYSJSGL-UT-001 结算编号 当日首号 单元测试 JUnit5 §3.1 当日无未删结算单 SettlementNoGenerator.next() JSD+yyyyMMdd+001
ZCZX-GYSJSGL-UT-002 结算编号 递增与左补零 单元测试 JUnit5 §3.1 最大序号 008 next() 末 3 位 009;总长 14
ZCZX-GYSJSGL-UT-003 结算编号 超 999 拒绝 单元测试 JUnit5 §3.1 当日已满 999 next() 抛业务异常
ZCZX-GYSJSGL-UT-004 结算编号 冲突重试 单元测试 JUnit5+Mockito 唯一键 Mock uk_settlement_no 冲突一次 重试 next() 第二次成功或明确失败
ZCZX-GYSJSGL-UT-005 结算生成 按头快照写入 单元测试 JUnit5+Mockito §3.5、§5.1 S1 订单 3 头总金额 10000 createFromOrder fee_method=2service_fee_amount=30.00payable_amount=9970.00
ZCZX-GYSJSGL-UT-006 结算生成 按额快照写入 单元测试 JUnit5+Mockito §3.5 S2 订单总金额 10000 createFromOrder fee_method=3;费率字段与 S2 一致;service_fee_amount=150.00
ZCZX-GYSJSGL-UT-007 结算生成 按户服务费 0 单元测试 JUnit5+Mockito §3.5 S3 订单 createFromOrder service_fee_amount=0payable=total_amount
ZCZX-GYSJSGL-UT-008 结算生成 订单字段冗余一致 单元测试 JUnit5+Mockito §10.2 订单 order_no、头数、金额已知 createFromOrder order_nototal_headstotal_amountsupplier_id 与订单一致
ZCZX-GYSJSGL-UT-009 结算生成 初始待结算 单元测试 JUnit5+Mockito §2.2 合法订单 createFromOrder settlement_status=0;凭证、完成时间为空
ZCZX-GYSJSGL-UT-010 结算生成 幂等 uk_order_id 单元测试 JUnit5+Mockito §4.1、§6.5 order_id 已有结算 再次 createFromOrder 抛错;不插入第二条
ZCZX-GYSJSGL-UT-011 凭证校验 缺 url/path 单元测试 JUnit5 §3.7、§6.2 validateSettleVoucher 缺字段 失败;请上传结算凭证
ZCZX-GYSJSGL-UT-012 凭证校验 非法后缀 单元测试 JUnit5 §3.7 path.pdf 失败;格式不符合
ZCZX-GYSJSGL-UT-013 凭证校验 合法 png 单元测试 JUnit5 §3.7 path.png 结尾 通过
ZCZX-GYSJSGL-UT-014 完成结算 事务成功 单元测试 JUnit5+Mockito §6.3 SS-PEND;合法凭证 completeSettle settlement_status=1settle_finish_time 非空;凭证已存
ZCZX-GYSJSGL-UT-015 完成结算 非待结算拒绝 单元测试 JUnit5+Mockito §6.4 SS-DONE completeSettle 失败;仅待结算可操作
ZCZX-GYSJSGL-UT-016 完成结算 关联订单非已完成 单元测试 JUnit5+Mockito §6.4 Mock 订单 order_status=0 completeSettle 失败;订单状态不满足
ZCZX-GYSJSGL-UT-017 完成结算 不回写订单 单元测试 JUnit5+Mockito §6.6 SS-PEND completeSettle 成功 未调用订单 update;订单仍为已完成
ZCZX-GYSJSGL-UT-018 完成结算 条件更新防并发 单元测试 JUnit5+Mockito §6.5 Mock update 返回 0 completeSettle 失败;提示已完成或操作无效
ZCZX-GYSJSGL-UT-019 列表查询 双模糊 AND 单元测试 JUnit5+Mockito §5.1 多条样本 selectList(settlementNo, orderNo) SQL 同时 LIKE 两条件
ZCZX-GYSJSGL-UT-020 列表查询 仅 del_flag=0 单元测试 JUnit5 §5.1 检查 BizSupplierSettlementMapper.xml 列表 SQL del_flag='0'create_time DESC
ZCZX-GYSJSGL-UT-021 详情 收费方式中文 单元测试 JUnit5 §3.5 fee_method=2 组装详情 feeMethodName=按头计费SupplierRules
ZCZX-GYSJSGL-UT-022 费用计算 与订单共用公式 单元测试 JUnit5 §3.5 S1/S2/S3 SettlementFeeCalculator 与订单 UT-018~020 结果一致(HALF_UP 2 位)

自动化已实现SettlementFeeCalculatorTestBizTradeOrderServiceImplTest(含 createFromOrder)、SettlementValidationTest(UT-011~013)、BizSupplierSettlementServiceImplTest(UT-014~016、018、021)、BizSupplierSettlementControllerApiTest(API-001、007、010、011、013)。


二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-GYSJSGL-API-001 列表 默认分页排序 接口测试 Postman §5.2 有结算数据 GET /list code=200;≤20 条;createTime 倒序
ZCZX-GYSJSGL-API-002 列表 结算单编号模糊 接口测试 Postman §5.1 编号含 JSD20260520 settlementNo=0520 命中对应行
ZCZX-GYSJSGL-API-003 列表 关联订单编号模糊 接口测试 Postman §5.1 订单号片段已知 orderNo=0520 命中 order_no 匹配行
ZCZX-GYSJSGL-API-004 列表 组合筛选 AND 接口测试 Postman §5.1 同时传两条件 settlementNo+orderNo 同时满足才命中
ZCZX-GYSJSGL-API-005 列表 不含逻辑删除 接口测试 Postman §5.1 某结算 del_flag=2 GET /list 无该 id
ZCZX-GYSJSGL-API-006 列表 列字段完整 接口测试 Postman §5.2 SS-PEND、SS-DONE 各一条 GET /list 行含编号、创建时间、订单号、供应商名、头数、金额、服务费、应付、状态、凭证、完成时间
ZCZX-GYSJSGL-API-007 详情 待结算全字段 接口测试 Postman §7 SS-PEND GET /{id} 含收费快照、feeMethodNamesettleVoucher 为空; lineList
ZCZX-GYSJSGL-API-008 详情 已完成含凭证 接口测试 Postman §7 SS-DONE GET /{id} settlementStatus=1settleFinishTime 有值;凭证 URL 可访问
ZCZX-GYSJSGL-API-009 详情 无效/已删 id 接口测试 Postman 异常 已登录 不存在或已删 id 失败或 data
ZCZX-GYSJSGL-API-010 完成结算 合法待结算 接口测试 Postman §6 SS-PEND;先 POST /common/upload PUT /completeSettle Body 示例 code=200settlementStatus=1settleFinishTime 非空
ZCZX-GYSJSGL-API-011 完成结算 缺结算凭证 接口测试 Postman §3.7 SS-PEND settleVoucherUrl 失败;请上传结算凭证
ZCZX-GYSJSGL-API-012 完成结算 非法文件后缀 接口测试 Postman §3.7 SS-PEND settleVoucherPath.pdf 失败;格式不符合
ZCZX-GYSJSGL-API-013 完成结算 已完成拒绝 接口测试 Postman §6.5 SS-DONE PUT /completeSettle 失败;已完成无需重复
ZCZX-GYSJSGL-API-014 完成结算 不存在 id 接口测试 Postman 异常 已登录 id=999999 失败
ZCZX-GYSJSGL-API-015 完成结算 订单已删拒绝 接口测试 Postman §10.6 结算在但订单 del_flag=2(异常数据) completeSettle 失败
ZCZX-GYSJSGL-API-016 约束 无新增接口 接口测试 Postman §4、§8.1 已登录 POST / 404 或方法不允许
ZCZX-GYSJSGL-API-017 约束 无修改删除 接口测试 Postman §8.1 已登录 PUT / 改金额;DELETE /{id} 均不允许
ZCZX-GYSJSGL-API-018 联调 支付生成待结算 接口测试 Postman §4.1 TO-PAY;凭证齐备 订单 PUT /tradeOrder/completePay 结算列表出现新行 settlementStatus=0uk_order_id 唯一
ZCZX-GYSJSGL-API-019 联调 一对一不重复 接口测试 Postman §4.1 已对 TO-DONE 完成支付 再次对该订单 completePay 订单侧失败;结算仍 1 条
ZCZX-GYSJSGL-API-020 快照 改供应商费率不重算 接口测试 Postman §3.5、§10.4 SS-PEND 按头生成后 改 S1 fee_standard→99;GET /{id} service_fee_amount 仍为生成时原值
ZCZX-GYSJSGL-API-021 快照 按额费率字段 接口测试 Postman §3.5 S2 支付生成结算 GET /{id} transactionFeeRatemanagementFeeRate 与支付时 S2 一致
ZCZX-GYSJSGL-API-022 约束 完成结算不回写订单 接口测试 Postman §6.6 SS-PEND completeSettleGET /tradeOrder/{orderId} 订单仍 orderStatus=1;支付凭证未变
ZCZX-GYSJSGL-API-023 端到端 支付→结算→完成 接口测试 Postman §10.7 TO-PAY 样本齐备 completePaylistcompleteSettle 每步 code=200;最终 settlementStatus=1
ZCZX-GYSJSGL-API-024 端到端 平台闭环终点 接口测试 Postman §14 决策 9 上一步已完成结算 查本模块列表 无后续必办接口;状态已完成
ZCZX-GYSJSGL-API-025 鉴权 未登录 接口测试 curl 安全 无 Token GET /list 401 或统一未登录
ZCZX-GYSJSGL-API-026 权限 无 list 权限 接口测试 Postman §11 list GET /list 无权限失败
ZCZX-GYSJSGL-API-027 权限 无 settle 权限 接口测试 Postman §11 仅 list/query PUT /completeSettle 无权限失败
ZCZX-GYSJSGL-API-028 权限 无 query 详情 接口测试 Postman §11 仅 list GET /{id} 无权限失败
ZCZX-GYSJSGL-API-029 响应 失败 msg 可读 接口测试 Postman §12 已登录 触发缺凭证、已完成重复 msg 与需求 §12 示例可区分
ZCZX-GYSJSGL-API-030 约束 详情无订单跳转字段 接口测试 Postman §3.2、§14 决策 10 SS-PEND GET /{id} JSON orderDetailUrl/tradeOrderRoute 等跳转字段

三、界面测试用例(UI)

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

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-GYSJSGL-UI-001 列表 默认列展示 UI 测试 Playwright+Chrome §5.2 已登录;有数据 进入「供应商结算管理」 列含结算单编号、创建时间、订单编号、供应商、头数、金额、服务费、应付、状态、凭证、完成时间、操作
ZCZX-GYSJSGL-UI-002 列表 结算单编号筛选 UI 测试 Playwright+Chrome §5.1 已知 JSD 片段 填编号→搜索 仅匹配行
ZCZX-GYSJSGL-UI-003 列表 关联订单编号筛选 UI 测试 Playwright+Chrome §5.1 已知订单号片段 填订单号→搜索 仅匹配行
ZCZX-GYSJSGL-UI-004 列表 组合筛选 UI 测试 Playwright+Chrome §5.1 两条件均有数据 同时填→搜索 同时满足才显示
ZCZX-GYSJSGL-UI-005 列表 重置 UI 测试 Playwright+Chrome §5.1 已筛选 搜索→重置 条件清空;列表恢复
ZCZX-GYSJSGL-UI-006 列表 无新增按钮 UI 测试 Playwright+Chrome §4、§8.1 有 list 权限 看工具栏 「新增」;仅搜索、重置
ZCZX-GYSJSGL-UI-007 列表 待结算操作按钮 UI 测试 Playwright+Chrome §8.2 SS-PEND 行 看操作列 含「完成结算」「查看」;打印凭证
ZCZX-GYSJSGL-UI-008 列表 已完成操作按钮 UI 测试 Playwright+Chrome §8.2 SS-DONE 行 看操作列 含「打印凭证」「查看」;完成结算
ZCZX-GYSJSGL-UI-009 列表 待结算凭证列空 UI 测试 Playwright+Chrome §5.2 SS-PEND 看结算凭证列 为空或「—」
ZCZX-GYSJSGL-UI-010 查看 只读含收费快照 UI 测试 Playwright+Chrome §7 SS-PEND 点击查看 全字段只读;展示收费方式及费率快照;无编辑入口
ZCZX-GYSJSGL-UI-011 查看 不跳转订单 UI 测试 Playwright+Chrome §3.2、§7 任意行 打开详情 「查看订单」「跳转订单」链接;订单编号纯文本
ZCZX-GYSJSGL-UI-012 查看 已完成凭证预览 UI 测试 Playwright+Chrome §7 SS-DONE 查看详情 结算凭证图可预览;完成时间有值
ZCZX-GYSJSGL-UI-013 完成结算 弹窗文案 UI 测试 Playwright+Chrome §6.1 SS-PEND 点「完成结算」 标题为「完成结算支付」
ZCZX-GYSJSGL-UI-014 完成结算 上传凭证成功 UI 测试 Playwright+Chrome §6.2 SS-PEND;V-OK 上传 jpg→确定 成功提示;列表状态「已完成」;完成时间有值
ZCZX-GYSJSGL-UI-015 完成结算 取消不变 UI 测试 Playwright+Chrome §6.2 SS-PEND 完成结算→取消 仍为待结算
ZCZX-GYSJSGL-UI-016 完成结算 缺凭证拦截 UI 测试 Playwright+Chrome §3.7 SS-PEND 不上传直接确定 提示请上传结算凭证
ZCZX-GYSJSGL-UI-017 完成结算 非法格式拦截 UI 测试 Playwright+Chrome §3.7 SS-PEND 上传 V-BAD 前端或提交失败
ZCZX-GYSJSGL-UI-018 完成结算 二次确认(若有) UI 测试 Playwright+Chrome §13 建议 前端已实现确认框 确定前弹窗 展示结算单号、供应商、实际应付(宜)
ZCZX-GYSJSGL-UI-019 完成结算 已完成不可再结 UI 测试 Playwright+Chrome §6.5 SS-DONE 找「完成结算」按钮 无按钮或不可点
ZCZX-GYSJSGL-UI-020 打印 仅已完成可打 UI 测试 Playwright+Chrome §8.3 SS-DONE 打印凭证 预览含编号、订单号、供应商、头数、金额、服务费、应付、状态、创建/完成时间、结算凭证图
ZCZX-GYSJSGL-UI-021 打印 不含订单支付凭证 UI 测试 Playwright+Chrome §8.3 SS-DONE 检查打印内容 订单支付凭证、无采购耳标明细
ZCZX-GYSJSGL-UI-022 打印 待结算不可打 UI 测试 Playwright+Chrome §8.3 SS-PEND 找打印按钮 无「打印凭证」
ZCZX-GYSJSGL-UI-023 端到端 订单支付到结算完成 UI 集成 Playwright+Chrome §10.7 权限齐备 订单模块完成支付→本模块完成结算 新待结算行出现→上传凭证→已完成;订单模块仍为已完成
ZCZX-GYSJSGL-UI-024 端到端 闭环无后续引导 UI 测试 Playwright+Chrome §14 决策 9 上一步已完成 完成后停留本模块 强制跳转订单页;无「下一步」必办
ZCZX-GYSJSGL-UI-025 权限 只读角色 UI 测试 Playwright+Chrome §11 仅 list/query 进入模块 无「完成结算」;可查看
ZCZX-GYSJSGL-UI-026 权限 无 settle UI 测试 Playwright+Chrome §11 无 settle SS-PEND 行 无「完成结算」按钮
ZCZX-GYSJSGL-UI-027 约束 金额不可编辑 UI 测试 Playwright+Chrome §8.1 查看/列表 尝试改服务费、应付 无输入框;不可改

Playwright 与谷歌浏览器(实施提示)

  • 安装:npm i -D @playwright/testnpx playwright install chrome
  • 配置:use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' }storageState 复用登录态。
  • 路由:await page.goto('/tradeMarket/supplierSettlement')
  • 筛选:page.getByPlaceholder('结算单编号').fill('JSD')getByRole('button', { name: '搜索' }).click()
  • 完成结算:getByRole('button', { name: '完成结算' }).first().click()locator('input[type=file]').setInputFiles('test.jpg') → 对话框 getByRole('button', { name: '确定' }).click() → 断言列表状态「已完成」。
  • 无跳转:await expect(page.getByRole('link', { name: '查看订单' })).toHaveCount(0)
  • 打印:page.waitForEvent('popup') 或断言打印 DOM 含 settlementNopayableAmount,不含 payVoucher

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-005~009、014、021 API-001~010、018、023~024 UI-001~005、010、014、020、023~024
异常流程 UT-010~013、015~016、018 API-011~015、029 UI-015~017、019
业务约束 UT-010、017、019~020 API-016~017、019~022、030 UI-006、011、021~022、027
来源与 1:1 UT-008、010 API-018~019 UI-023
费用快照 UT-005~007、020、022 API-020~021 UI-010
凭证双轨 UT-011~013 API-011~012 UI-014、016~017、021
状态与操作矩阵 UT-009、015 API-013 UI-007~009、019、022
不回写订单 UT-017 API-022
不跳转订单 API-030 UI-011、024
闭环终点 API-024 UI-024
列表筛选 UT-019~020 API-002~005 UI-002~005
权限/鉴权 API-025~028 UI-025~026
打印 §8.3 UI-020~022
无 CRUD API-016~017 UI-006、027

功能需求追溯(自查)

需求章节 要点 主要对应用例
§2 状态 待结算/已完成;不可逆 UT-009、015;API-010、013;UI-007~009、019
§3 字段 编号、快照、凭证、时间 UT-001~008、011~013;API-006~008、020~021;UI-001、010、012
§4 来源 仅支付生成;不可手工建 UT-010;API-016~019;UI-006、023
§5 列表 双模糊 AND;列 API-001~006;UI-001~005
§6 完成结算 凭证、事务、不回写 UT-014~018;API-010~015、022;UI-013~019
§7 查看 只读;无跳转 API-007、030;UI-010~012
§8 功能清单 无增删改;打印边界 API-016~017;UI-006、020~022、027
§10 关联订单 协同、异常 API-015、018~019、023;UI-023
§11 权限 分权 API-025~028;UI-025~026
§12 提示语 失败可读 UT-011;API-029;UI-016
§14 决策 闭环、不跳转 API-024、030;UI-011、024

修订记录

版本 说明
1.0 初版:单元 22、接口 30、UI 27;覆盖正常/异常/约束、单元+接口+UI;Playwright+Chrome;前缀 ZCZX-GYSJSGL;对齐需求 v1.1、技术方案 v1.0
1.1 标注后端已实现用例的自动化类名