西藏巴青项目

共同富裕项目管理测试用例.md 20KB

共同富裕项目 — 测试用例

依据:共同富裕项目功能需求.md共同富裕项目技术方案.md
接口 Base Path(示例)/commonProsperity/project;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;可先调 POST /common/upload 取得附件的 urlfileName(作 filePath)。运营图片jpg/jpeg/png,单张 ≤10MB,1~3 张(必填)。运营视频mp4(可扩展),≤100MB,选填。封面jpg/jpeg/png,≤10MB,选填。项目类型1 合作共赢、2 农文旅融合、3 认养农业。发布状态0 未发布、1 已发布。

界面(UI)测试:借助 Playwright 启动 Chromium(与 Google Chrome 同源内核);可配置 channel: 'chrome' 调用本机已安装的谷歌浏览器,模拟点击、输入、多图/视频选择与断言。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
GTFY-XM-UT-001 状态机 编辑守卫 单元测试 JUnit5 仅未发布可改 调用 canEdit(publishStatus)0→true,1→false 与需求 §6 矩阵一致
GTFY-XM-UT-002 状态机 删除守卫 单元测试 JUnit5 仅未发布可删 调用 canDelete0→true,1→false 与 §5.4 一致
GTFY-XM-UT-003 状态机 发布守卫 单元测试 JUnit5 仅未发布可发布 调用 canPublish0→true,1→false 与 §5.6 一致
GTFY-XM-UT-004 状态机 下架守卫 单元测试 JUnit5 仅已发布可下架 调用 canOffline1→true,0→false 与 §5.6 一致
GTFY-XM-UT-005 参数校验 项目名称长度 单元测试 JUnit5 1~20 字 空串、1 字、20 字、21 字 空/21 失败;1~20 通过
GTFY-XM-UT-006 参数校验 项目类型 单元测试 JUnit5 仅 1~3 projectType 为 1/3 通过;0、4、null 失败 与技术方案 §2.4 一致
GTFY-XM-UT-007 参数校验 简介/内容字数 单元测试 JUnit5 简介 1~50;内容 1~500 简介空/51 字;内容空/501 字 均失败;合法长度通过
GTFY-XM-UT-008 参数校验 实施日期区间 单元测试 JUnit5 结束≥开始 implEndDate<implStartDate;相等;合法区间 前者失败;后两者通过
GTFY-XM-UT-009 运营图片 数量 1~3 单元测试 JUnit5 §5.1 operationImages 为 0/1/3/4 项 0、4 失败;1、3 通过
GTFY-XM-UT-010 运营图片 sortOrder 唯一 单元测试 JUnit5 同请求内不重复 两张图均为 sortOrder=1 失败
GTFY-XM-UT-011 附件校验 运营图后缀 单元测试 JUnit5 白名单 .jpg 通过;.bmp 拒绝 与 §3.4 一致
GTFY-XM-UT-012 附件校验 视频/封面成对 单元测试 JUnit5 url/path 同有或同无 videoFileUrl 无 path;视频/封面成对齐全 前者失败;后者通过
GTFY-XM-UT-013 附件校验 视频后缀 单元测试 JUnit5 mp4 .mp4 通过;.avi 拒绝 与 §3.4 一致
GTFY-XM-UT-014 Service 新增初始状态 单元测试 JUnit5+Mockito 草稿 合法 Body(含 1 张运营图) insert(...) 主表 publish_status=0;子表 1 条;publish_time
GTFY-XM-UT-015 Service 更新已发布拒绝 单元测试 JUnit5+Mockito 状态约束 Mock publish=1 update(...) 业务异常;主表与子表不写
GTFY-XM-UT-016 Service 发布成功 单元测试 JUnit5+Mockito 上架 Mock publish=0 且子表≥1 张 publish(id) publish=1publish_time 非空
GTFY-XM-UT-017 Service 发布缺运营图拒绝 单元测试 JUnit5+Mockito §5.6 Mock 子表 0 条 publish(id) 失败;状态仍为 0
GTFY-XM-UT-018 Service 下架成功回流 单元测试 JUnit5+Mockito 下架保留附件 Mock publish=1 offline(id) publish=0offline_time 非空;子表与视频/封面字段保留
GTFY-XM-UT-019 Service 未发布禁止下架 单元测试 JUnit5+Mockito 异常 Mock publish=0 offline(id) 失败;状态不变
GTFY-XM-UT-020 Service 删除联动清文件 单元测试 JUnit5+Mockito §5.4 publish=0;含 2 张子表 path+视频+封面 path remove(ids) 删主表+子表;Mock 验证对各 path 调用 deleteFile
GTFY-XM-UT-021 Service 替换运营图删旧 单元测试 JUnit5+Mockito §5.3 publish=0;旧子表 path 已知 update 换新 operationImages 事务删旧子表再插;Mock 验证删除被移除的 file_path
GTFY-XM-UT-022 Service 下架不删文件 单元测试 JUnit5+Mockito §5.6 publish=1 offline(id) Mock 验证调用 deleteFile

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
GTFY-XM-API-001 列表 默认分页排序 接口测试 Postman/curl §5.2 已登录;有数据 GET /commonProsperity/project/list rows≤20;create_time 倒序;含 opImageCount
GTFY-XM-API-002 列表 项目名称模糊 接口测试 Postman 名称模糊 已登录 projectName= 片段 返回名称含该片段记录
GTFY-XM-API-003 列表 项目类型筛选 接口测试 Postman 精确 有多类型数据 projectType=2 均为农文旅融合
GTFY-XM-API-004 列表 发布状态筛选 接口测试 Postman §5.2 有已/未发布 publishStatus=0 / 1 与筛选一致
GTFY-XM-API-005 列表 组合查询 接口测试 Postman 多条件 已登录 projectName+projectType+publishStatus 同时满足
GTFY-XM-API-006 列表 App 仅已发布 接口测试 Postman §8 多端 有未发布数据 publishStatus=1 无未发布记录
GTFY-XM-API-007 新增 最小必填(1 图) 接口测试 Postman 正常新增 已上传 1 张 jpg POST 必填+operationImages 1 项 code 成功;publishStatus=0;子表 1 条
GTFY-XM-API-008 新增 含 3 图+视频+封面 接口测试 Postman 全附件 已上传合法文件 POST 3 张图+mp4+封面 成功;主表与子表字段落库
GTFY-XM-API-009 新增 名称非法 接口测试 Postman 1~20 已登录 名空/21 字 失败;无新记录
GTFY-XM-API-010 新增 类型非法 接口测试 Postman 枚举 已登录 projectType=09 失败
GTFY-XM-API-011 新增 简介/内容非法 接口测试 Postman 字数 已登录 简介空或 51 字;内容空或 501 字 失败
GTFY-XM-API-012 新增 实施日期倒置 接口测试 Postman E≥S 已登录 结束早于开始 失败;可读 msg
GTFY-XM-API-013 新增 运营图 0 张 接口测试 Postman 1~3 张 已登录 operationImages=[] 失败
GTFY-XM-API-014 新增 运营图 4 张 接口测试 Postman 上限 已登录 数组 4 项 失败
GTFY-XM-API-015 新增 sortOrder 重复 接口测试 Postman 约束 已登录 两图同 sortOrder 失败
GTFY-XM-API-016 新增 视频仅 url 无 path 接口测试 Postman 成对 已登录 videoFileUrl 失败
GTFY-XM-API-017 详情 有效 id 接口测试 Postman §5.5 已登录 GET /commonProsperity/project/{id} operationImages[]sortOrder 升序
GTFY-XM-API-018 详情 无效 id 接口测试 Postman 异常 已登录 不存在 id 404 或业务失败
GTFY-XM-API-019 修改 未发布成功 接口测试 Postman §5.3 publish=0 PUT 改简介 成功
GTFY-XM-API-020 修改 已发布拒绝 接口测试 Postman 矩阵 publish=1 PUT 失败;msg 含须下架类提示;数据不变
GTFY-XM-API-021 修改 替换运营图 接口测试 Postman 删旧文件 publish=0;原子表 path 已知 PUT 换 2 张新图 成功;旧图 path 不可访问(抽查存储)
GTFY-XM-API-022 修改 删至 0 张图 接口测试 Postman §5.3 publish=0 PUToperationImages 失败
GTFY-XM-API-023 修改 替换视频与封面 接口测试 Postman §5.3 原有视频/封面 PUT 换新 url+path 成功;旧视频/封面不可访问
GTFY-XM-API-024 删除 未发布成功 接口测试 Postman §5.4 publish=0 DELETE .../{ids} 成功;详情 404;子表无记录
GTFY-XM-API-025 删除 已发布拒绝 接口测试 Postman 矩阵 publish=1 DELETE 失败
GTFY-XM-API-026 删除 批量删除 接口测试 Postman 批量 多条 publish=0 DELETE id1,id2 均不可查
GTFY-XM-API-027 发布 未发布成功 接口测试 Postman §5.6 publish=0;子表≥1 POST .../publish/{id} publish=1;publishTime 有值
GTFY-XM-API-028 发布 已发布重复 接口测试 Postman 异常 publish=1 POST .../publish/{id} 失败
GTFY-XM-API-029 发布 子表 0 张拒绝 接口测试 Postman 前置校验 人为删子表后发布 POST .../publish/{id} 失败;仍为 0
GTFY-XM-API-030 下架 已发布成功 接口测试 Postman §5.6 publish=1 POST .../offline/{id} publish=0;offlineTime 有值;详情仍有 operationImages
GTFY-XM-API-031 下架 未发布拒绝 接口测试 Postman 约束 publish=0 POST .../offline/{id} 失败
GTFY-XM-API-032 端到端 全生命周期 接口测试 Postman §4 流程 已登录 新增(1图)→发布→下架→改(2图)→再发布→下架→删除 每步状态与矩阵一致;同 id
GTFY-XM-API-033 鉴权 未登录 接口测试 curl 安全 无 Token GET .../list 401 或统一未登录响应
GTFY-XM-API-034 权限 无写权限 接口测试 Postman 越权 仅 list 权限 POST .../project 无权限失败
GTFY-XM-API-035 响应 失败可读 接口测试 Postman §7 已登录 触发名称空、0 张图等 Body 含 codemsgmsg 可区分
GTFY-XM-API-036 上传 运营图超限(可选) 接口测试 Postman §3.4 环境允许略超 10MB POST /common/upload 或提交校验 明确大小/格式提示;业务表无脏数据

三、界面测试用例(UI)

测试工具Playwright + Chromiumchannel: 'chrome' 时使用本机 Google Chrome)。步骤映射:page.gotolocator.filllocator.clicksetInputFilesexpect;确认框:page.on('dialog')getByRole('button', { name: /确定|确认/ })

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
GTFY-XM-UI-001 列表 默认分页排序 UI 测试 Playwright+Chrome §5.2 已登录;数据>20 进入「共同富裕项目」菜单 默认每页 20;创建时间新在前
GTFY-XM-UI-002 列表 项目名称模糊 UI 测试 Playwright+Chrome 名称模糊 存在名称含关键词记录 输入项目名称→查询 表格含该行
GTFY-XM-UI-003 列表 项目类型筛选 UI 测试 Playwright+Chrome 精确 多类型均有数据 选「认养农业」→查询 类型列均为认养农业
GTFY-XM-UI-004 列表 发布状态筛选 UI 测试 Playwright+Chrome §5.2 有已/未发布 分别筛「未发布」「已发布」 状态列与筛选一致
GTFY-XM-UI-005 列表 组合与重置 UI 测试 Playwright+Chrome 恢复条件 已多条件筛选 查询→重置 条件清空;恢复默认列表
GTFY-XM-UI-006 列表 操作按钮矩阵 UI 测试 Playwright+Chrome §6 准备未发布、已发布各一条 逐行查看操作列 未发布:编辑/发布/删除;已发布:下架;已发布无编辑/删除/发布
GTFY-XM-UI-007 列表 运营图数量展示 UI 测试 Playwright+Chrome §5.2 有 1 张、3 张图的项目 查看列表列 显示 opImageCount 或等价提示正确
GTFY-XM-UI-008 新增 最小必填主流程 UI 测试 Playwright+Chrome §5.1 已登录 新增→填名称/类型/简介/内容/实施起止日→上传 1 张运营图→提交 成功;列表「未发布」
GTFY-XM-UI-009 新增 含 3 图+视频+封面 UI 测试 Playwright+Chrome 全附件 已登录 上传 3 张 jpg、mp4、封面→提交 成功;详情可见图序与视频
GTFY-XM-UI-010 新增 名称空或超长 UI 测试 Playwright+Chrome 异常 已登录 名称留空或 21 字→提交 校验失败
GTFY-XM-UI-011 新增 名称 20 字边界 UI 测试 Playwright+Chrome 上限 已登录 名称 20 字+其余合法→提交 成功
GTFY-XM-UI-012 新增 类型必选 UI 测试 Playwright+Chrome 约束 可清空类型时 不选类型→提交 必选提示
GTFY-XM-UI-013 新增 简介/内容超长 UI 测试 Playwright+Chrome 字数 已登录 简介>50 或内容>500 字→提交 失败
GTFY-XM-UI-014 新增 实施日期倒置 UI 测试 Playwright+Chrome E≥S 已登录 结束早于开始→提交 校验失败
GTFY-XM-UI-015 新增 无运营图提交 UI 测试 Playwright+Chrome 1~3 张 已登录 不上传运营图→提交 失败;提示至少 1 张
GTFY-XM-UI-016 新增 运营图超 3 张 UI 测试 Playwright+Chrome 上限 组件允许多选时 尝试上传第 4 张 前端限制或提交失败
GTFY-XM-UI-017 新增 图片/视频非法格式 UI 测试 Playwright+Chrome §5.1 准备 .bmp、.avi setInputFiles→提交 拒绝或明确错误
GTFY-XM-UI-018 新增 视频封面选填 UI 测试 Playwright+Chrome 选填 已登录 仅 1 张运营图、不传视频封面→提交 成功
GTFY-XM-UI-019 详情 字段完整 UI 测试 Playwright+Chrome §5.5 含视频封面记录 点「详情」 名称、类型、简介、内容、日期、运营图列表、视频、封面、发布状态齐全
GTFY-XM-UI-020 详情 运营图预览顺序 UI 测试 Playwright+Chrome sortOrder 3 张不同序 开详情 展示顺序与 sortOrder 一致
GTFY-XM-UI-021 详情 已发布只读 UI 测试 Playwright+Chrome §5.5 已发布记录 开详情 无「保存」;可有「下架」
GTFY-XM-UI-022 修改 未发布编辑成功 UI 测试 Playwright+Chrome §5.3 未发布 编辑→改简介→保存 列表/详情已更新
GTFY-XM-UI-023 修改 已发布禁止编辑 UI 测试 Playwright+Chrome 矩阵 已发布 尝试编辑或保存 无编辑入口或须下架提示
GTFY-XM-UI-024 修改 清空必填失败 UI 测试 Playwright+Chrome 异常 未发布 清空名称或删光运营图→保存 校验失败
GTFY-XM-UI-025 修改 替换运营图 UI 测试 Playwright+Chrome §5.3 未发布;原有 2 图 编辑→换 1 张新图→保存 详情为 1 张新图;旧 URL 失效
GTFY-XM-UI-026 修改 替换视频与封面 UI 测试 Playwright+Chrome §5.3 原有视频封面 编辑换新 mp4、png→保存 详情为新资源
GTFY-XM-UI-027 发布 未发布发布成功 UI 测试 Playwright+Chrome §5.6 未发布、≥1 图 点「发布」→确认 状态「已发布」
GTFY-XM-UI-028 发布 已发布无发布钮 UI 测试 Playwright+Chrome 矩阵 已发布行 查看操作列 「发布」隐藏或禁用
GTFY-XM-UI-029 下架 已发布下架成功 UI 测试 Playwright+Chrome §5.6 已发布 点「下架」→确认 「未发布」;记录与附件仍在
GTFY-XM-UI-030 下架 未发布无下架钮 UI 测试 Playwright+Chrome 约束 未发布行 查看操作列 无「下架」
GTFY-XM-UI-031 发布下架 下架后再发布闭环 UI 集成 Playwright+Chrome §4 步骤 6 完成 UI-029 编辑(可选换图)→再发布 再次「已发布」;同一 id
GTFY-XM-UI-032 删除 未发布删除成功 UI 测试 Playwright+Chrome §5.4 未发布 删除→确认 列表无该行
GTFY-XM-UI-033 删除 已发布禁删 UI 测试 Playwright+Chrome 矩阵 已发布 尝试删除 按钮不可用或提示先下架
GTFY-XM-UI-034 删除 取消删除 UI 测试 Playwright+Chrome 确认框 未发布 删除→取消 行仍在
GTFY-XM-UI-035 删除 删后附件失效 UI 测试 Playwright+Chrome 存储清理 删前复制运营图 URL 删除后新标签打开 不可访问或 404
GTFY-XM-UI-036 端到端 全生命周期串联 UI 集成 Playwright+Chrome §4 可新建 新增(1图)→发布→下架→改→再发布→下架→删除 每步状态与按钮矩阵一致
GTFY-XM-UI-037 权限 只读账号 UI 测试 Playwright+Chrome §8 无 add/edit/remove/publish/offline 登录进模块 无对应按钮或操作拒绝
GTFY-XM-UI-038 类型 三类均可发布 UI 测试 Playwright+Chrome §2.1 已登录 各建类型 1/2/3 一条并筛选 筛选正确;均可走发布流
GTFY-XM-UI-039 错误提示 业务失败可读 UI 测试 Playwright+Chrome §7 已登录 对已发布强行保存或 0 图提交 Message 含明确原因

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

  • 安装:npm i -D @playwright/testnpx playwright install chromium;本机 Chrome:npx playwright install chrome,配置 channel: 'chrome'
  • playwright.config.ts 示例:use: { channel: 'chrome', headless: false, locale: 'zh-CN', baseURL: 'http://localhost:80' }
  • 登录复用:test.beforeAll 登录一次,storageState: 'auth.json'
  • 菜单:侧栏 getByText('共同富裕项目')goto('/commonProsperity/project')(以实际路由为准)。
  • 多图上传:对运营图 input[type=file] 多次 setInputFiles 或组件内「继续添加」至第 3 张。
  • 视频:setInputFiles('fixtures/demo.mp4');按钮:getByRole('button', { name: /新增|发布|下架|删除/ })

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-014、016、018、020~021 API-001~008、017、019、021、023~027、030、032 UI-001~009、011、018~022、025~027、029、031~032、036、038
异常流程 UT-005~013、015、017、019 API-009~016、018、020、022、025、028~029、031、033~036 UI-010、012~017、023~024、028、030、033~034、039
业务约束/矩阵 UT-001~004、015、017、019、022 API-020、025、028~031、034 UI-006、021、023、028、030、033、036~037

功能需求追溯(自查)

需求章节 要点 主要对应用例
§5.1 新增 名称/类型/简介/内容/日期、运营图 1~3、视频封面选填、初始未发布 UT-005~014;API-007~016;UI-008~018
§5.2 列表 名称模糊、类型、发布状态、分页排序、opImageCount API-001~006;UI-001~007
§5.3 修改 仅未发布;替换删旧文件;不可 0 图 UT-001、015、021;API-019~023;UI-022~026
§5.4 删除 仅未发布;删主表+子表+存储 UT-002、020;API-024~026;UI-032~035
§5.5 详情 字段完整、图序、已发布只读 API-017;UI-019~021
§5.6 发布/下架 发布前置≥1 图;下架保留附件 UT-003~004、016~019、022;API-027~031;UI-027~031
§6 矩阵 五类操作权限 UT-001~004;UI-006、021、023、028、030、033、036
§7 错误约定 code/msg 可读 API-035;UI-039
§8 App publishStatus=1 API-006

修订记录

版本 说明
1.0 初版:单元 22、接口 36、UI 39;含运营图子表、视频/封面;Playwright+Chrome;Base Path /commonProsperity/project