# 共同富裕成果 — 测试用例 > 依据:`共同富裕成果功能需求.md`、`共同富裕成果技术方案.md` > **接口 Base Path(示例)**:`/commonProsperity/achievement`;若含 `context-path` 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。 **通用前置(无特殊说明)**:具备本模块菜单与按钮权限的账号已登录。**统计范围**:`YYYY-MM`(如 `2026-05`),同月**不可重复**。**比率字段**(数字平台使用率、品牌产品溢价率):**0~1**(如 `0.85` 表示 85%)。**整数项**(人数、个数等):非负整数。**金额/面积**:≥ 0,建议最多 2 位小数。 **界面(UI)测试**:借助 **Playwright** 启动 **Chromium**(与 **Google Chrome 同源内核**);可配置 `channel: 'chrome'` 调用本机已安装的谷歌浏览器。 --- ## 一、单元测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | GTFY-CG-UT-001 | 参数校验 | 统计范围格式 | 单元测试 | JUnit5 | YYYY-MM | 无 | `2026-05` 通过;`2026-13`、`202605`、`2026/05`、空 失败 | 与 §3.4 一致 | | GTFY-CG-UT-002 | 参数校验 | 统计范围唯一 | 单元测试 | JUnit5 | §5.1 | 库中已有 `2026-01` | 新增同 `statPeriod` | 失败;提示月份已存在 | | GTFY-CG-UT-003 | 参数校验 | 集体经济收入 | 单元测试 | JUnit5 | ≥0,2 位小数 | 无 | -1、0、0.01、999999.99、三位小数 | 负/三位小数失败;0 及合法正数通过 | | GTFY-CG-UT-004 | 参数校验 | 整数项非负 | 单元测试 | JUnit5 | 人数/个数 | 无 | `employmentDrivenCount` 为 -1、1.5、0、100 | 负/小数失败;0、100 通过 | | GTFY-CG-UT-005 | 参数校验 | 绿化面积 | 单元测试 | JUnit5 | ≥0 可小数 | 无 | `newGreenArea` 为 -0.1、0、12.5 | 负失败;0、12.5 通过 | | GTFY-CG-UT-006 | 参数校验 | 数字平台使用率 | 单元测试 | JUnit5 | [0,1] | 无 | -0.01、0、0.85、1、1.01 | 越界失败;0、0.85、1 通过 | | GTFY-CG-UT-007 | 参数校验 | 品牌产品溢价率 | 单元测试 | JUnit5 | [0,1] | 无 | 同 UT-006 规则 | 与 UT-006 一致 | | GTFY-CG-UT-008 | 参数校验 | 必填项非空 | 单元测试 | JUnit5 | §5.1 全必填 | 无 | 缺 `statPeriod` 或任一整数字段 null | 失败 | | GTFY-CG-UT-009 | Service | 新增落库 | 单元测试 | JUnit5+Mockito | 正常登记 | 合法实体、月份未占用 | `insert(...)` | 各指标与入参一致;无发布状态字段 | | GTFY-CG-UT-010 | Service | 修改排除自身查重 | 单元测试 | JUnit5+Mockito | §5.3 | id=1 为 `2026-01`;存在 `2026-02` | 将 id=1 改为 `2026-02` | 失败(与 id=2 冲突) | | GTFY-CG-UT-011 | Service | 修改同月保留 | 单元测试 | JUnit5+Mockito | 不改月份 | id=1 `2026-01` | 改收入仍 `2026-01` | 成功 | | GTFY-CG-UT-012 | Service | 删除记录 | 单元测试 | JUnit5+Mockito | §5.4 | Mock Mapper | `deleteByIds([id])` | 调用删除;无附件清理 | | GTFY-CG-UT-013 | Service | 列表按年筛选 SQL | 单元测试 | JUnit5 | statYear | 无 | 检查 XML:`statYear=2026` | 条件含 `2026-%` 或 `LEFT(stat_period,4)=2026` | | GTFY-CG-UT-014 | Service | 列表排序 | 单元测试 | JUnit5 | 技术方案 | 无 | 检查 ORDER BY | `stat_period DESC`, `create_time DESC` | | GTFY-CG-UT-015 | 修改守卫 | 无状态限制 | 单元测试 | JUnit5 | 台账 | 任意记录 | `canEdit(any)` 恒 true(若存在守卫) | 无「已发布不可改」类限制 | --- ## 二、接口测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | GTFY-CG-API-001 | 列表 | 默认分页排序 | 接口测试 | Postman/curl | §5.2 | 已登录;有多月数据 | `GET /commonProsperity/achievement/list` | `rows`≤20;`statPeriod` 月份倒序 | | GTFY-CG-API-002 | 列表 | 统计年份筛选 | 接口测试 | Postman | 按年 | 含 `2025-12`、`2026-03` | `statYear=2026` | 仅 `2026-xx` 记录 | | GTFY-CG-API-003 | 列表 | 年份为空不过滤 | 接口测试 | Postman | 全量 | 已登录 | 不传 `statYear` | 含不同年份记录 | | GTFY-CG-API-004 | 列表 | 无数据年份 | 接口测试 | Postman | 边界 | 已登录 | `statYear=1999` | `rows` 为空或 total=0 | | GTFY-CG-API-005 | 新增 | 合法全字段 | 接口测试 | Postman | §5.1 | 已登录;`2026-06` 未占用 | `POST` Body 全部必填合法 | `code` 成功;详情字段一致 | | GTFY-CG-API-006 | 新增 | 统计范围重复 | 接口测试 | Postman | 唯一 | 已存在 `2026-01` | `POST` `statPeriod=2026-01` | 失败;`msg` 可区分;库中仍 1 条 | | GTFY-CG-API-007 | 新增 | 统计范围格式非法 | 接口测试 | Postman | YYYY-MM | 已登录 | `statPeriod=2026-13` 或 `202605` | 失败 | | GTFY-CG-API-008 | 新增 | 比率大于 1 | 接口测试 | Postman | [0,1] | 已登录 | `digitalPlatformUsageRate=1.2` | 失败 | | GTFY-CG-API-009 | 新增 | 比率为负 | 接口测试 | Postman | [0,1] | 已登录 | `brandPremiumRate=-0.1` | 失败 | | GTFY-CG-API-010 | 新增 | 整数项含小数 | 接口测试 | Postman | 整数 | 已登录 | `employmentDrivenCount=10.5` | 失败 | | GTFY-CG-API-011 | 新增 | 收入为负 | 接口测试 | Postman | ≥0 | 已登录 | `collectiveEconomyIncome=-1` | 失败 | | GTFY-CG-API-012 | 新增 | 边界比率 0 和 1 | 接口测试 | Postman | 闭区间 | 未占用两个月 | 分别新增 `rate=0`、`rate=1` 的两条 | 均成功 | | GTFY-CG-API-013 | 详情 | 有效 id | 接口测试 | Postman | §5.5 | 已登录 | `GET /commonProsperity/achievement/{id}` | 含 12 项指标及审计字段 | | GTFY-CG-API-014 | 详情 | 无效 id | 接口测试 | Postman | 异常 | 已登录 | 不存在 id | 404 或业务失败 | | GTFY-CG-API-015 | 修改 | 合法修改指标 | 接口测试 | Postman | §5.3 | 已登录;有记录 | `PUT` 改 `collectiveEconomyIncome`、人数等 | 成功;详情已更新 | | GTFY-CG-API-016 | 修改 | 改月冲突 | 接口测试 | Postman | 唯一 | A=`2026-01`、B=`2026-02` | 将 A 改为 `2026-02` | 失败 | | GTFY-CG-API-017 | 修改 | 校验仍生效 | 接口测试 | Postman | 异常 | 已登录 | `PUT` 比率改为 2 | 失败;原数据不变 | | GTFY-CG-API-018 | 删除 | 单条删除 | 接口测试 | Postman | §5.4 | 已登录 | `DELETE .../achievement/{id}` | 成功;详情 404 | | GTFY-CG-API-019 | 删除 | 批量删除 | 接口测试 | Postman | 批量 | 已登录 | `DELETE id1,id2` | 均不可查 | | GTFY-CG-API-020 | 端到端 | CRUD 串联 | 接口测试 | Postman | §4 | 已登录 | 新增→列表(statYear)→详情→改→删 | 全流程成功 | | GTFY-CG-API-021 | 鉴权 | 未登录 | 接口测试 | curl | 安全 | 无 Token | `GET .../list` | 401 或统一未登录 | | GTFY-CG-API-022 | 权限 | 无写权限 | 接口测试 | Postman | 越权 | 仅 list | `POST .../achievement` | 无权限失败 | | GTFY-CG-API-023 | 响应 | 失败可读 | 接口测试 | Postman | §7 | 已登录 | 触发重复月份、比率越界 | `code`、`msg` 可区分 | | GTFY-CG-API-024 | 导出 | 按年导出(可选) | 接口测试 | Postman | §3.6 | 有 export 权限 | `POST .../export`+`statYear=2026` | 文件仅含 2026 年数据 | --- ## 三、界面测试用例(UI) **测试工具**:**Playwright** + **Chromium**(`channel: 'chrome'` 使用本机 **Google Chrome**)。 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | GTFY-CG-UI-001 | 列表 | 默认分页排序 | UI 测试 | Playwright+Chrome | §5.2 | 已登录;数据>20 | 进入「共同富裕成果」 | 每页 20;统计范围月份新在前 | | GTFY-CG-UI-002 | 列表 | 统计年份筛选 | UI 测试 | Playwright+Chrome | statYear | 含 2025、2026 数据 | 选年份 `2026`→查询 | 仅显示 `2026-xx` | | GTFY-CG-UI-003 | 列表 | 重置筛选 | UI 测试 | Playwright+Chrome | 恢复 | 已按年筛选 | 重置 | 年份清空;显示全部 | | GTFY-CG-UI-004 | 列表 | 操作按钮 | UI 测试 | Playwright+Chrome | §6 | 有数据 | 查看操作列 | 查看/编辑/删除可见(按权限) | | GTFY-CG-UI-005 | 新增 | 合法全指标提交 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 新增→选统计月份→填全部指标→确定 | 成功;列表出现该行 | | GTFY-CG-UI-006 | 新增 | 统计范围必选 | UI 测试 | Playwright+Chrome | 必填 | 已登录 | 不选月份→提交 | 校验失败 | | GTFY-CG-UI-007 | 新增 | 重复月份 | UI 测试 | Playwright+Chrome | 唯一 | 已有 `2026-01` | 再新增 `2026-01` | 提示月份已存在 | | GTFY-CG-UI-008 | 新增 | 比率超 1 | UI 测试 | Playwright+Chrome | 0~1 | 已登录 | 使用率填 `1.2`→提交 | 校验失败 | | GTFY-CG-UI-009 | 新增 | 整数项填小数 | UI 测试 | Playwright+Chrome | 整数 | 已登录 | 带动就业人数 `10.5`→提交 | 校验失败 | | GTFY-CG-UI-010 | 新增 | 收入为负 | UI 测试 | Playwright+Chrome | ≥0 | 已登录 | 集体经济收入 `-1`→提交 | 校验失败 | | GTFY-CG-UI-011 | 新增 | 比率边界 0/1 | UI 测试 | Playwright+Chrome | 闭区间 | 两个未占用月 | 分别填 0 和 1 提交 | 均成功 | | GTFY-CG-UI-012 | 详情 | 字段完整 | UI 测试 | Playwright+Chrome | §5.5 | 任意记录 | 点「查看」 | 12 项指标+审计信息齐全 | | GTFY-CG-UI-013 | 详情 | 比率展示格式 | UI 测试 | Playwright+Chrome | 展示约定 | 使用率 0.85 | 查看详情 | 显示为 0.85 或 85%(与产品一致) | | GTFY-CG-UI-014 | 修改 | 编辑成功 | UI 测试 | Playwright+Chrome | §5.3 | 有记录 | 编辑→改收入/人数→保存 | 列表/详情已更新 | | GTFY-CG-UI-015 | 修改 | 改月冲突 | UI 测试 | Playwright+Chrome | 唯一 | 已有 01、02 月 | 将 01 月改为 02 月保存 | 失败提示 | | GTFY-CG-UI-016 | 修改 | 清空必填失败 | UI 测试 | Playwright+Chrome | 校验 | 有记录 | 清空某必填整数项→保存 | 校验失败 | | GTFY-CG-UI-017 | 删除 | 单条确认删除 | UI 测试 | Playwright+Chrome | §5.4 | 有记录 | 删除→确认 | 行消失 | | GTFY-CG-UI-018 | 删除 | 取消删除 | UI 测试 | Playwright+Chrome | 确认框 | 有记录 | 删除→取消 | 行仍在 | | GTFY-CG-UI-019 | 删除 | 批量删除 | UI 测试 | Playwright+Chrome | 批量 | 多条 | 勾选→批量删→确认 | 选中均消失 | | GTFY-CG-UI-020 | 端到端 | CRUD 串联 | UI 集成 | Playwright+Chrome | §4 | 可新增 | 新增→按年查→详情→改→删 | 全流程成功 | | GTFY-CG-UI-021 | 权限 | 只读账号 | UI 测试 | Playwright+Chrome | §8 | 无 add/edit/remove | 登录进模块 | 无对应按钮或操作拒绝 | | GTFY-CG-UI-022 | 导出 | 按年导出(可选) | UI 测试 | Playwright+Chrome | export | 有导出权限 | 选年→点导出 | 下载文件且数据为所选年 | | GTFY-CG-UI-023 | 表单 | 月份选择器 | UI 测试 | Playwright+Chrome | YYYY-MM | 已登录 | 新增打开月份控件 | 仅能选到月;提交值为 `YYYY-MM` | | GTFY-CG-UI-024 | 错误提示 | 业务失败可读 | UI 测试 | Playwright+Chrome | §7 | 已登录 | 触发重复月提交 | Message 含明确原因 | --- ## Playwright 与谷歌浏览器(实施提示) - 安装:`npm i -D @playwright/test`;`npx playwright install chromium`;本机 Chrome:`channel: 'chrome'`。 - 菜单:`getByText('共同富裕成果')` 或 `goto('/commonProsperity/achievement')`(以实际路由为准)。 - 统计年份:筛选区 `el-select` 或年份输入;统计范围表单用 `type="month"` 的 date-picker(若依 `value-format="yyyy-MM"`)。 - 比率输入:对数字输入框 `fill('1.2')` 后点确定,断言错误提示。 --- ## 覆盖对照 | 类别 | 单元 UT | 接口 API | 界面 UI | | --- | --- | --- | --- | | 正常流程 | UT-009~012、014 | API-001~005、012~016、018~020 | UI-001~006、011~014、017、020 | | 异常流程 | UT-001~008 | API-006~011、017、021~023 | UI-007~010、015~016、018~019、024 | | 业务约束 | UT-002、006~007、015 | API-002~004、006~012、016 | UI-002、007~011、015、023 | --- ## 功能需求追溯(自查) | 需求章节 | 要点 | 主要对应用例 | | --- | --- | --- | | §5.1 新增 | 12 项必填、YYYY-MM、整数/比率/金额规则、月唯一 | UT-001~010;API-005~012;UI-005~011 | | §5.2 列表 | statYear、分页、月份倒序 | API-001~004;UI-001~003 | | §5.3 修改 | 全字段可改、改月查重 | UT-010~011;API-015~017;UI-014~016 | | §5.4 删除 | 确认、批量 | UT-012;API-018~019;UI-017~019 | | §5.5 详情 | 全指标展示 | API-013~014;UI-012~013 | | §6 矩阵 | 无发布状态 | UT-015;无发布/下架用例 | | §7 错误约定 | code/msg | API-023;UI-024 | --- ## 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:单元 15、接口 24、UI 24;台账无发布态;Playwright+Chrome;Base `/commonProsperity/achievement` |