西藏巴青项目

产业政策宣传管理测试用例.md 18KB

产业政策宣传 — 测试用例

依据:产业政策宣传功能需求.md产业政策宣传功能管理技术方案.md
接口 Base Path(示例)/policy/publicity;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;可先调 POST /common/upload 取得政策文件/封面的 urlfileName(存储路径)、originalFilename(政策文件展示名)。政策文件白名单:pdf/md/doc/docx/xls/xlsx/ppt/pptx(≤30MB);封面:jpg/jpeg/png(≤10MB)。政策名称1~20 字符(必填)。政策层级1 国家级、2 省级、3 市级、4 县级。政策文件、封面:选填。

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


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-XC-UT-001 状态机 编辑守卫 单元测试 JUnit5 仅未发布可改 调用 canEdit(publishStatus)0→true,1→false 与需求 §6 矩阵一致
ZCZX-XC-UT-002 状态机 删除守卫 单元测试 JUnit5 仅未发布可删 调用 canDelete0→true,1→false 与 §5.4 一致
ZCZX-XC-UT-003 状态机 发布守卫 单元测试 JUnit5 仅未发布可发布 调用 canPublish0→true,1→false 与 §5.6 一致
ZCZX-XC-UT-004 状态机 下架守卫 单元测试 JUnit5 仅已发布可下架 调用 canOffline1→true,0→false 与 §5.6 一致
ZCZX-XC-UT-005 参数校验 政策名称长度 单元测试 JUnit5 1~20 字 空串、1 字、20 字、21 字 空/21 失败;1~20 通过
ZCZX-XC-UT-006 参数校验 政策层级 单元测试 JUnit5 仅 1~4 policyLevel 为 1/4 通过;0、5、null 失败 与技术方案 §2.2 一致
ZCZX-XC-UT-007 参数校验 简介/描述字数 单元测试 JUnit5 简介选填≤50;描述必填≤50 简介 null/空通过、51 字失败;描述空/51 字失败、50 字通过 符合 §5.1
ZCZX-XC-UT-008 参数校验 出台日期 单元测试 JUnit5 合法且非未来 非法格式、明天日期、今天/过去日期 非法/未来失败;合法日期通过
ZCZX-XC-UT-009 附件校验 政策文件后缀 单元测试 JUnit5 白名单 .pdf 通过;.exe 拒绝 与 §5.1 一致
ZCZX-XC-UT-010 附件校验 封面后缀 单元测试 JUnit5 白名单 .jpg 通过;.bmp 拒绝 与 §5.1 一致
ZCZX-XC-UT-011 附件校验 文件三件套一致性 单元测试 JUnit5 url/path/name 同有或同无 仅传 url 无 path;三者齐全 前者失败;后者通过
ZCZX-XC-UT-012 Service 新增初始状态 单元测试 JUnit5+Mockito 草稿 合法 Body insert(...) publish_status=0publish_time 为空
ZCZX-XC-UT-013 Service 更新已发布拒绝 单元测试 JUnit5+Mockito 状态约束 Mock publish=1 update(...) 业务异常;不写库
ZCZX-XC-UT-014 Service 发布成功 单元测试 JUnit5+Mockito 上架 Mock publish=0 且必填齐全 publish(id) publish=1publish_time 非空
ZCZX-XC-UT-015 Service 下架成功回流 单元测试 JUnit5+Mockito 下架回流 Mock publish=1 offline(id) publish=0offline_time 非空;附件字段保留
ZCZX-XC-UT-016 Service 未发布禁止下架 单元测试 JUnit5+Mockito 异常 Mock publish=0 offline(id) 业务失败;状态不变
ZCZX-XC-UT-017 Service 删除联动清文件 单元测试 JUnit5+Mockito §5.4 publish=0;记录含 policy/cover path remove(ids) 删库记录;Mock 验证 deleteFile 对两 path 各调用
ZCZX-XC-UT-018 Service 替换附件删旧文件 单元测试 JUnit5+Mockito §5.3 publish=0;旧 path 已知 update 换新 path 成功 Mock 验证删除旧 policy_file_path/cover_file_path

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-XC-API-001 列表 默认分页排序 接口测试 Postman/curl §5.2 已登录;有数据 GET /industryPolicy/publicity/list rows≤20;create_time 倒序
ZCZX-XC-API-002 列表 关键字-名称 接口测试 Postman 名称模糊 已登录 keyword= 仅命中名称的词 返回含该名称记录
ZCZX-XC-API-003 列表 关键字-简介 接口测试 Postman OR 关系 简介含词、名称不含 同上 keyword 仍命中
ZCZX-XC-API-004 列表 政策层级筛选 接口测试 Postman 精确 已登录 policyLevel=2 均为省级
ZCZX-XC-API-005 列表 发布状态筛选 接口测试 Postman §5.2 已登录 publishStatus=0 / 1 与筛选一致
ZCZX-XC-API-006 列表 组合查询 接口测试 Postman 多条件 已登录 keyword+policyLevel+publishStatus 同时满足
ZCZX-XC-API-007 新增 最小必填无附件 接口测试 Postman 正常新增 已登录 POST /industryPolicy/publicity 仅必填、不传文件 code 成功;publishStatus=0
ZCZX-XC-API-008 新增 含政策文件与封面 接口测试 Postman 选填附件 已上传合法文件 POST Body 含 file 三件套与 cover 成功;字段落库
ZCZX-XC-API-009 新增 名称非法 接口测试 Postman 1~20 已登录 名称空/21 字/缺 policyName 失败;无新记录
ZCZX-XC-API-010 新增 层级非法 接口测试 Postman 枚举 已登录 policyLevel=099 失败
ZCZX-XC-API-011 新增 简介/描述超长 接口测试 Postman ≤50 已登录 introduction 或 policyDesc 51 字 失败
ZCZX-XC-API-012 新增 未来出台日期 接口测试 Postman 日期约束 已登录 issueDate 为明天 失败
ZCZX-XC-API-013 新增 缺必填 policyDesc 接口测试 Postman 必填 已登录 缺 policyDesc 失败
ZCZX-XC-API-014 详情 有效 id 接口测试 Postman §5.5 已登录 GET /industryPolicy/publicity/{id} 含 policyFileName、publishStatus 等
ZCZX-XC-API-015 详情 无效 id 接口测试 Postman 异常 已登录 不存在 id 404 或业务失败
ZCZX-XC-API-016 修改 未发布成功 接口测试 Postman §5.3 已登录;publish=0 PUT /industryPolicy/publicity 成功
ZCZX-XC-API-017 修改 已发布拒绝 接口测试 Postman 矩阵 已登录;publish=1 PUT 失败;msg 含须下架类提示;数据不变
ZCZX-XC-API-018 修改 替换政策文件 接口测试 Postman 删旧文件 publish=0;原 path 已知 PUT 换新 file 三件套 成功;旧文件不可访问(抽查存储)
ZCZX-XC-API-019 删除 未发布成功 接口测试 Postman §5.4 已登录;publish=0 DELETE /industryPolicy/publicity/{ids} 成功;详情 404
ZCZX-XC-API-020 删除 已发布拒绝 接口测试 Postman 矩阵 已登录;publish=1 DELETE 失败
ZCZX-XC-API-021 发布 未发布成功 接口测试 Postman §5.6 已登录;publish=0;必填齐全 POST .../publish/{id} publish=1;publishTime 有值
ZCZX-XC-API-022 发布 已发布重复 接口测试 Postman 异常 已登录;publish=1 POST .../publish/{id} 失败
ZCZX-XC-API-023 下架 已发布成功 接口测试 Postman §5.6 已登录;publish=1 POST .../offline/{id} publish=0;offlineTime 有值;附件仍在
ZCZX-XC-API-024 下架 未发布拒绝 接口测试 Postman 约束 已登录;publish=0 POST .../offline/{id} 失败
ZCZX-XC-API-025 端到端 全生命周期 接口测试 Postman §4 流程 已登录 新增→发布→下架→修改→再发布→下架→删除 每步状态与矩阵一致;同 id 贯穿
ZCZX-XC-API-026 鉴权 未登录 接口测试 curl 安全 无 Token GET .../list 401 或统一未登录响应
ZCZX-XC-API-027 权限 无写权限 接口测试 Postman 越权 仅 list 权限账号 POST .../publicity 无权限失败
ZCZX-XC-API-028 响应 失败可读 接口测试 Postman §7 已登录 触发名称空串等校验 Body 含 codemsgmsg 可区分错误类型
ZCZX-XC-API-029 上传 政策文件超限(可选) 接口测试 Postman §5.1 环境允许略超 30MB POST /common/upload 或提交触发校验 明确大小/格式提示;业务表无脏数据

三、界面测试用例(UI)

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

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-XC-UI-001 列表 默认分页排序 UI 测试 Playwright+Chrome §5.2 已登录;数据>20 进入「产业政策宣传」菜单 默认每页 20;创建时间新在前
ZCZX-XC-UI-002 列表 关键字-名称 UI 测试 Playwright+Chrome 名称模糊 存在名称含关键词记录 输入关键字→查询 表格含该行
ZCZX-XC-UI-003 列表 关键字-简介 UI 测试 Playwright+Chrome OR 简介含词、名称不含 输入该词→查询 命中
ZCZX-XC-UI-004 列表 政策层级筛选 UI 测试 Playwright+Chrome 精确 多层级均有数据 选「省级」→查询 层级列均为省级
ZCZX-XC-UI-005 列表 发布状态筛选 UI 测试 Playwright+Chrome §5.2 有已发布/未发布数据 分别筛「未发布」「已发布」 状态列与筛选一致
ZCZX-XC-UI-006 列表 组合与重置 UI 测试 Playwright+Chrome 恢复条件 已多条件筛选 查询→重置 条件清空;恢复默认列表
ZCZX-XC-UI-007 列表 操作按钮矩阵 UI 测试 Playwright+Chrome §6 准备未发布、已发布各一条 逐行查看操作列 未发布:编辑/发布/删除可见;已发布:下架可见;已发布无编辑/删除/发布
ZCZX-XC-UI-008 新增 最小必填主流程 UI 测试 Playwright+Chrome §5.1 已登录 新增→填名称、层级、出台日期、描述→提交 成功;列表状态「未发布」
ZCZX-XC-UI-009 新增 含简介与附件 UI 测试 Playwright+Chrome 选填 已登录 填简介;上传 pdf 与 jpg 封面→提交 成功;详情可见文件名与封面
ZCZX-XC-UI-010 新增 名称空或超长 UI 测试 Playwright+Chrome 异常 已登录 名称留空或 21 字→提交 前端或提交后校验失败
ZCZX-XC-UI-011 新增 名称 20 字边界 UI 测试 Playwright+Chrome 上限 已登录 名称恰好 20 字+其余合法→提交 成功
ZCZX-XC-UI-012 新增 层级必选 UI 测试 Playwright+Chrome 约束 可清空层级时 不选层级→提交 必选提示
ZCZX-XC-UI-013 新增 未来出台日期 UI 测试 Playwright+Chrome 异常 已登录 出台日期选明天→提交 校验失败
ZCZX-XC-UI-014 新增 简介/描述超长 UI 测试 Playwright+Chrome ≤50 已登录 简介或描述>50 字→提交 失败
ZCZX-XC-UI-015 新增 政策文件无附件可提交 UI 测试 Playwright+Chrome 选填 已登录 仅必填、不上传政策文件→提交 成功(与标准类「正文必填」区分)
ZCZX-XC-UI-016 新增 政策文件/封面非法 UI 测试 Playwright+Chrome §5.1 准备 .exe、.bmp 或超限文件 setInputFiles 上传→提交 拒绝或明确错误提示
ZCZX-XC-UI-017 详情 字段完整 UI 测试 Playwright+Chrome §5.5 任意记录 点「详情」 名称、层级、简介、日期、描述、文件名、封面、发布状态齐全
ZCZX-XC-UI-018 详情 已发布只读 UI 测试 Playwright+Chrome §5.5 已发布记录 开详情 无「保存」类按钮;可有「下架」
ZCZX-XC-UI-019 修改 未发布编辑成功 UI 测试 Playwright+Chrome §5.3 未发布记录 编辑→改名称→保存 列表/详情已更新
ZCZX-XC-UI-020 修改 已发布禁止编辑 UI 测试 Playwright+Chrome 矩阵 已发布 尝试进编辑或改字段保存 无编辑入口或提示须先下架
ZCZX-XC-UI-021 修改 保存清空必填失败 UI 测试 Playwright+Chrome 异常 未发布 清空名称或描述→保存 校验失败
ZCZX-XC-UI-022 修改 替换政策文件与封面 UI 测试 Playwright+Chrome §5.3 未发布;原有附件 编辑→换 pdf 与 png→保存 详情为新文件名;旧 URL 不可访问
ZCZX-XC-UI-023 发布 未发布发布成功 UI 测试 Playwright+Chrome §5.6 未发布、必填齐全 点「发布」→确认 状态变「已发布」
ZCZX-XC-UI-024 发布 已发布无发布钮 UI 测试 Playwright+Chrome 矩阵 已发布行 查看操作列 「发布」隐藏或禁用
ZCZX-XC-UI-025 下架 已发布下架成功 UI 测试 Playwright+Chrome §5.6 已发布 点「下架」→确认 状态变「未发布」;记录仍在
ZCZX-XC-UI-026 下架 未发布无下架钮 UI 测试 Playwright+Chrome 约束 未发布行 查看操作列 无「下架」
ZCZX-XC-UI-027 发布下架 下架后再发布闭环 UI 集成 Playwright+Chrome §4 步骤 6 完成 UI-025 编辑(可选)→再发布 再次「已发布」;同一行 id
ZCZX-XC-UI-028 删除 未发布删除成功 UI 测试 Playwright+Chrome §5.4 未发布 删除→确认 列表无该行
ZCZX-XC-UI-029 删除 已发布禁删 UI 测试 Playwright+Chrome 矩阵 已发布 尝试删除 按钮不可用或提示先下架
ZCZX-XC-UI-030 删除 删后附件失效 UI 测试 Playwright+Chrome 存储清理 删除前复制政策文件 URL 删除后新标签打开 URL 不可访问或 404
ZCZX-XC-UI-031 端到端 全生命周期串联 UI 集成 Playwright+Chrome §4 可新建 新增→发布→下架→改→再发布→下架→删除 每步状态与按钮矩阵一致
ZCZX-XC-UI-032 权限 只读账号 UI 测试 Playwright+Chrome §8 权限 无 add/edit/remove 权限 登录进模块 无新增/编辑/删除或操作拒绝
ZCZX-XC-UI-033 层级 四级均可发布 UI 测试 Playwright+Chrome §2.1 已登录 各建国家级/省级/市级/县级一条并筛选 展示与筛选正确;均可走发布流
ZCZX-XC-UI-034 错误提示 业务失败可读 UI 测试 Playwright+Chrome §7 已登录 对已发布记录若强行调编辑 API 或绕过 UI 保存 页面 Message 含明确 msg(若 UI 暴露)

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('/industryPolicy/publicity')(以实际为准)。
  • 文件上传:page.locator('input[type=file]').setInputFiles('fixtures/policy.pdf')
  • 按钮示例:getByRole('button', { name: /新增|发布|下架|删除/ })

覆盖对照

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

功能需求追溯(自查)

需求章节 要点 主要对应用例
§5.1 新增 名称 1~20、层级 1~4、简介/文件/封面选填、描述与日期必填、初始未发布 UT-005~012;API-007~013;UI-008~016
§5.2 列表 关键字 OR、层级、发布状态、分页排序 API-001~006;UI-001~006
§5.3 修改 仅未发布;替换删旧文件 UT-001、013、018;API-016~018;UI-019~022
§5.4 删除 仅未发布;删存储文件 UT-002、017;API-019~020;UI-028~030
§5.5 详情 字段完整、已发布只读 API-014~015;UI-017~018
§5.6 发布/下架 发布前置;下架保留附件 UT-003~004、014~016;API-021~024;UI-023~027
§6 矩阵 五类操作权限 UT-001~004;UI-007、018、020、024、026、029、031
§7 错误约定 code/msg 可读 API-028;UI-034

修订记录

版本 说明
1.0 初版:单元 18、接口 29、UI 34;无知识库用例;Playwright+Chrome;Base Path /industryPolicy/publicity