# 畜牧医疗资源管理 — 测试用例 > 依据:`畜牧医疗资源管理功能需求.md`、`畜牧医疗资源管理技术方案.md` > **接口 Base Path**:`/diseaseTreatments/medicalResource`;鉴权与若依一致(Cookie / Token)。 **通用前置(无特殊说明)**:具备本模块全套权限的账号已登录(`diseaseTreatment:medicalResource:list|query|add|edit|remove|publish|offline|assignAccount`)。`biz_medical_resource` 宜预置(`del_flag=0`): | 样本 | 类型编码 | 名称 | 发布态要点 | | --- | --- | --- | --- | | **V1** | `004001` 兽医 | 张兽医 | 未发布;未分配账号 | | **V2** | `004001` 兽医 | 李兽医 | 已发布 | | **T1** | `004002` 团队 | 牧业专家组 | 未发布 | | **O1** | `004003` 机构 | 县动物医院 | 已发布 | | **O2** | `004003` 机构 | 乡镇诊所 | 已下架(`offline_time` 非空) | | **E1** | `004004` 设备 | B超仪01 | 未发布 | **兽医合法 Body 片段**:`resourceType=004001`,`resourceName=测试兽医`,`introduction=简介`,`contactPhone=13800138000`,`affiliatedUnit=县畜牧局`,`detailAddress=某某路1号`,`consultModes=[1,2]`,`serviceArea=全县`,`feeStandard=100`,`serviceStartTime=08:00`,`serviceEndTime=18:00`,`serviceWeekdays=[1,2,3,4,5]`,`photoFileUrl`/`photoFilePath` 来自上传接口(**不含** `maxDailyAppointments`)。 **机构合法 Body 片段**(`resourceType=004003`):`resourceName`、`orgLevel` 必填;`personInCharge`、`maxDailyAppointments`、照片/介绍/地址/手机/服务时段等为选填。 **界面(UI)测试**:**Playwright** + **Chromium**(`channel: 'chrome'` 使用本机 **Google Chrome**)。 --- ## 一、单元测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | ZCZX-XMZYGL-UT-001 | 参数校验 | 兽医服务时段 | 单元测试 | JUnit5 | §5.4 | 无 | 结束早于开始;相等;合法 | 前两种失败;`08:00`~`18:00` 通过 | | ZCZX-XMZYGL-UT-002 | 参数校验 | 手机号 | 单元测试 | JUnit5 | §5.2 | 无 | 非法号、合法 11 位 | 非法失败;`13800138000` 通过 | | ZCZX-XMZYGL-UT-003 | 参数校验 | 名称/介绍长度 | 单元测试 | JUnit5 | §5.4~5.7 | 无 | 名称 0/11 字;介绍 501 字 | 超限失败;1~10/500 通过 | | ZCZX-XMZYGL-UT-004 | 参数校验 | 收费标准 | 单元测试 | JUnit5 | §5.4 | 无 | 0、负数、正数 | 非正数失败;`100` 通过 | | ZCZX-XMZYGL-UT-005 | 参数校验 | 接诊方式/服务周日 | 单元测试 | JUnit5 | §5.4 | 无 | 接诊方式空数组失败;`required=false` 时服务周日空通过 | 与必填开关一致 | | ZCZX-XMZYGL-UT-005a | 参数校验 | 兽医资料选填 | 单元测试 | JUnit5 | §5.4 | 无 | 无照片/介绍/手机/单位/地址/服务区域/收费,保留接诊等必填 | 通过 | | ZCZX-XMZYGL-UT-005c | 参数校验 | 兽医收费选填 | 单元测试 | JUnit5 | §5.4 | `feeStandard=null` | `validateRowForSave` | 通过;填 0 仍失败 | | ZCZX-XMZYGL-UT-005b | 参数校验 | 兽医手机格式 | 单元测试 | JUnit5 | §5.4 | 填非法手机 | `validateRowForSave` | 失败 | | ZCZX-XMZYGL-UT-006 | 参数校验 | 团队成立时间 | 单元测试 | JUnit5 | §5.5 | 无 | 未来日期;合法过去日期 | 未来失败(若填写);未填通过 | | ZCZX-XMZYGL-UT-006b | 参数校验 | 团队资料选填 | 单元测试 | JUnit5 | §5.5 | 无 | 仅团队名称,其余资料字段空 | 通过 | | ZCZX-XMZYGL-UT-006c | 参数校验 | 机构资料选填 | 单元测试 | JUnit5 | §5.6 | 无 | 机构名称+机构级别;其余资料字段空 | 通过 | | ZCZX-XMZYGL-UT-006d | 参数校验 | 机构单日接诊 | 单元测试 | JUnit5 | §5.6 | 无 | 填 0 或负数 | 失败;正整数或未填通过 | | ZCZX-XMZYGL-UT-006e | 参数校验 | 设备资料选填 | 单元测试 | JUnit5 | §5.7 | 无 | 仅设备名称,照片/介绍/型号/隶属单位空 | 通过 | | ZCZX-XMZYGL-UT-006f | 参数校验 | 设备型号长度 | 单元测试 | JUnit5 | §5.7 | 无 | 型号 11 字 | 失败 | | ZCZX-XMZYGL-UT-007 | 参数校验 | 类型字段矩阵 | 单元测试 | JUnit5 | §5.3、§2.1 | 无 | 设备行带 `contactPhone`;兽医缺 `feeStandard` | 设备校验不要求手机;兽医缺收费失败 | | ZCZX-XMZYGL-UT-007a | 参数校验 | 兽医单日接诊 | 单元测试 | JUnit5 | §5.3、草稿 §2 | 无 | 合法兽医不传 `maxDailyAppointments`;传入 20 后 `validateRowForSave` | 均通过;后者保存对象 `maxDailyAppointments` 为 `null` | | ZCZX-XMZYGL-UT-008 | 参数校验 | 照片路径 | 单元测试 | JUnit5 | §5.2 | 无 | 非 `/profile` 前缀;jpg 路径 | 非法路径失败;合法通过 | | ZCZX-XMZYGL-UT-009 | 发布态 | 已发布不可改 | 单元测试 | JUnit5 | §5.8、§6 | `publish_status=1` | `validateForUpdate` | 失败 | | ZCZX-XMZYGL-UT-010 | 发布态 | 仅已发布可下架 | 单元测试 | JUnit5 | §5.11 | 未发布/已发布 | `validateOffline` | 仅 `publish_status=1` 通过 | | ZCZX-XMZYGL-UT-011 | 发布态 | 三态解析 | 单元测试 | JUnit5 | §2.1 | 三组库记录 | 解析界面状态 | 未发布/已发布/已下架 与 `offline_time` 一致 | | ZCZX-XMZYGL-UT-012 | 分配账号 | 类型与次数 | 单元测试 | JUnit5 | §5.12 | 团队 type=2;已分配 | `validateAssignAccount` | 团队失败;已分配失败 | | ZCZX-XMZYGL-UT-013 | Service | 新增落库 | 单元测试 | JUnit5+Mockito | §5.2 | Mock Mapper | `insert` 合法兽医 | `publish_status=0`;`offline_time` 空;`account_assigned=0` | | ZCZX-XMZYGL-UT-014 | Service | 发布 | 单元测试 | JUnit5+Mockito | §5.11 | 未发布 V1 | `publish(id)` | `publish_status=1`;`publish_time` 非空 | | ZCZX-XMZYGL-UT-015 | Service | 下架保留发布时间 | 单元测试 | JUnit5+Mockito | §5.11 | 已发布 V2 | `offline(id)` | `publish_status=0`;`offline_time` 非空;`publish_time` 保留 | | ZCZX-XMZYGL-UT-016 | Service | 逻辑删除 | 单元测试 | JUnit5+Mockito | §5.10 | 未发布 | `remove(id)` | `del_flag=2` | | ZCZX-XMZYGL-UT-017 | Service | 删除有关联 | 单元测试 | JUnit5+Mockito | §2.5 | `hasReference=true` | `remove` | 抛 `ServiceException` | | ZCZX-XMZYGL-UT-018 | Service | 分配账号成功 | 单元测试 | JUnit5+Mockito | §5.12 | 未发布兽医;Mock 用户服务 | `assignAccount(id)` | `account_assigned=1`;写 `sys_user_id`;绑定角色 **100** | | ZCZX-XMZYGL-UT-019 | Service | 删除联动删账号 | 单元测试 | JUnit5+Mockito | §5.10、草稿 §10 | 未发布已分配;`sys_user_id=88` | `deleteByIds` | 调用 `deleteLinkedAccount`;`del_flag=2` | | ZCZX-XMZYGL-UT-020 | 分配账号 | 机构角色 102 | 单元测试 | JUnit5 | §5.12、草稿 §11 | 无 | `defaultRoleId('004003')` | 返回 **102** | | ZCZX-XMZYGL-UT-021 | Mapper | 列表筛选 SQL | 单元测试 | JUnit5 | §3.1 | 无 | 检查 XML | `del_flag=0`;`resource_type=`;`resource_name LIKE`;`create_time DESC` | | ZCZX-XMZYGL-UT-022 | Mapper | 发布态筛选 | 单元测试 | JUnit5 | §2.1 | 无 | `publishStatus=2` 条件 | 含 `offline_time IS NOT NULL` | --- ## 二、接口测试用例 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | ZCZX-XMZYGL-API-001 | 列表 | 默认分页 | 接口测试 | Postman | §5.1 | 有多条样本 | `GET /list?resourceType=004001` | `code=200`;`rows`≤20;`create_time` 倒序 | | ZCZX-XMZYGL-API-002 | 列表 | 名称模糊 | 接口测试 | Postman | §2.6 | 有 V1「张兽医」 | `resourceName=张` | 含 V1;全名「张兽医」亦命中 | | ZCZX-XMZYGL-API-003 | 列表 | 发布状态筛选 | 接口测试 | Postman | §2.6 | 有 V2 已发布 | `publishStatus=1` | 仅已发布记录 | | ZCZX-XMZYGL-API-004 | 列表 | 已下架筛选 | 接口测试 | Postman | §2.4 | 有 O2 | `publishStatus=2` | 含 O2 | | ZCZX-XMZYGL-API-005 | 列表 | 不含已删除 | 接口测试 | Postman | §2.5 | 某 id 已删 | `GET /list` | 无该 id | | ZCZX-XMZYGL-API-006 | 列表 | 缺 resourceType | 接口测试 | Postman | §3.1 | 已登录 | 不传 `resourceType` | 参数错误或空列表(以实现为准) | | ZCZX-XMZYGL-API-007 | 新增 | 兽医全字段 | 接口测试 | Postman | §5.4 | 已登录;已上传照片 | `POST` 合法兽医 Body | `code=200`;`publishStatus` 对应未发布 | | ZCZX-XMZYGL-API-008 | 新增 | 专家团队 | 接口测试 | Postman | §5.5 | 已登录 | `POST` `resourceType=004002` 合法字段 | 成功;无兽医专属字段必填 | | ZCZX-XMZYGL-API-009 | 新增 | 诊疗机构 | 接口测试 | Postman | §5.6 | 已登录 | `POST` `resourceType=004003`;机构名称+机构级别 | 成功;照片/介绍/服务时段等可省略 | | ZCZX-XMZYGL-API-010 | 新增 | 医疗设备 | 接口测试 | Postman | §5.7 | 已登录 | `POST` `resourceType=004004`;仅设备名称 | 成功;照片/介绍/型号/隶属单位可省略 | | ZCZX-XMZYGL-API-011 | 新增 | 手机号非法 | 接口测试 | Postman | §5.2 | 已登录 | `contactPhone=123` | `code≠200`;`msg` 含联系方式 | | ZCZX-XMZYGL-API-012 | 新增 | 介绍仅空白 | 接口测试 | Postman | §5.2 | 已登录 | `introduction=" "` | 失败 | | ZCZX-XMZYGL-API-013 | 新增 | 服务时段非法 | 接口测试 | Postman | §5.4 | 已登录 | `serviceEndTime` 早于 `serviceStartTime` | 失败 | | ZCZX-XMZYGL-API-014 | 详情 | 有效 id | 接口测试 | Postman | §5.9 | 有 V1 | `GET /{id}` | 全字段;`consultModes` 为数组 | | ZCZX-XMZYGL-API-015 | 详情 | 无效/已删 id | 接口测试 | Postman | 异常 | 已登录 | 不存在或已删 id | 失败或 `data` 空 | | ZCZX-XMZYGL-API-016 | 修改 | 未发布改备注 | 接口测试 | Postman | §5.8 | 有 V1 | `PUT` 改 `introduction` | 成功;`resourceType` 不变 | | ZCZX-XMZYGL-API-017 | 修改 | 已发布禁止 | 接口测试 | Postman | §5.8、§6 | 有 V2 已发布 | `PUT` 任意字段 | 失败;库不变 | | ZCZX-XMZYGL-API-018 | 修改 | 改 resourceType 无效 | 接口测试 | Postman | §5.2 | 有 V1 | `PUT` 改 `resourceType=004003` | 失败或忽略;库仍为 `004001` | | ZCZX-XMZYGL-API-019 | 发布 | 未发布发布 | 接口测试 | Postman | §5.11 | 有 V1 | `POST /publish/{id}` | `publish_status=1`;有 `publishTime` | | ZCZX-XMZYGL-API-020 | 发布 | 重复发布 | 接口测试 | Postman | §5.11 | V2 已发布 | 再次 `publish` | 失败;「该资源已发布」 | | ZCZX-XMZYGL-API-021 | 下架 | 已发布下架 | 接口测试 | Postman | §5.11 | 有 V2 | `POST /offline/{id}` | `publish_status=0`;`offline_time` 有值 | | ZCZX-XMZYGL-API-022 | 下架 | 未发布不可下架 | 接口测试 | Postman | §5.11 | 有 V1 | `POST /offline/{id}` | 失败 | | ZCZX-XMZYGL-API-023 | 删除 | 未发布逻辑删 | 接口测试 | Postman | §5.10 | 无关联新行 | `DELETE /{id}` | 成功;列表不可见 | | ZCZX-XMZYGL-API-023a | 删除 | 已分配联动删账号 | 接口测试 | Postman | §5.10、草稿 §10 | 未发布兽医已 `assignAccount` | `DELETE /{id}` | 资源不可见;`sys_user` 对应用户已删 | | ZCZX-XMZYGL-API-024 | 删除 | 已发布禁止 | 接口测试 | Postman | §5.10 | 有 V2 | `DELETE` | 失败 | | ZCZX-XMZYGL-API-025 | 分配账号 | 兽医成功 | 接口测试 | Postman | §5.12 | V1 未分配 | `POST /assignAccount/{id}` | `accountAssigned=1`;登录名拼音+id;角色 **100** | | ZCZX-XMZYGL-API-025a | 分配账号 | 机构成功 | 接口测试 | Postman | §5.12 | 未发布机构 | `POST /assignAccount/{id}` | `accountAssigned=1`;角色 **102** | | ZCZX-XMZYGL-API-026 | 分配账号 | 重复分配 | 接口测试 | Postman | §5.12 | 已分配行 | 再次 `assignAccount` | 失败 | | ZCZX-XMZYGL-API-027 | 分配账号 | 团队禁止 | 接口测试 | Postman | §5.12 | 有 T1 | `assignAccount` | 失败 | | ZCZX-XMZYGL-API-028 | 分配账号 | 已发布禁止 | 接口测试 | Postman | §5.12 | 有 V2 | `assignAccount` | 失败 | | ZCZX-XMZYGL-API-029 | 端到端 | 下架后编辑再发布 | 接口测试 | Postman | §4.2 | 有 O2 或新建机构 | `offline`→`PUT`→`publish` | 各步 `code=200`;最终已发布 | | ZCZX-XMZYGL-API-030 | 端到端 | 全流程 | 接口测试 | Postman | §4 | 已登录 | `POST`→`list`→`GET`→`assignAccount`→`publish`→`offline`→`DELETE` | 关键步成功;删除前须下架 | | ZCZX-XMZYGL-API-031 | 鉴权 | 未登录 | 接口测试 | curl | 安全 | 无 Token | `GET /list?resourceType=004001` | 401 或统一未登录 | | ZCZX-XMZYGL-API-032 | 权限 | 无发布权限 | 接口测试 | Postman | §6 | 无 publish | `POST /publish/1` | 无权限失败 | | ZCZX-XMZYGL-API-033 | 权限 | 无分配账号权限 | 接口测试 | Postman | §6 | 无 assignAccount | `POST /assignAccount/1` | 无权限失败 | | ZCZX-XMZYGL-API-034 | 响应 | 失败可读 | 接口测试 | Postman | §8 | 已登录 | 触发已发布修改、重复分配 | `msg` 可区分场景 | --- ## 三、界面测试用例(UI) **测试工具**:**Playwright** + **Chromium**(`channel: 'chrome'` 使用本机 **Google Chrome**)。 | 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | ZCZX-XMZYGL-UI-001 | 列表 | 四 Tab 与列展示 | UI 测试 | Playwright+Chrome | §5.1、§2.3 | 已登录;有各类型数据 | 进入模块;切换四个 Tab | 每 Tab 仅本类型;列含名称、介绍摘要、发布状态、操作 | | ZCZX-XMZYGL-UI-002 | 列表 | Tab 与下拉联动 | UI 测试 | Playwright+Chrome | §2.3 | 已登录 | 切换 Tab;改顶部资源类型下拉 | Tab 与下拉一致 | | ZCZX-XMZYGL-UI-003 | 列表 | 名称模糊筛选 | UI 测试 | Playwright+Chrome | §2.6 | 有「张兽医」 | 填「张」→搜索 | 列表含匹配行 | | ZCZX-XMZYGL-UI-004 | 列表 | 发布状态筛选 | UI 测试 | Playwright+Chrome | §2.6 | 有已发布样本 | 选「已发布」→搜索 | 仅已发布行 | | ZCZX-XMZYGL-UI-005 | 列表 | 重置 | UI 测试 | Playwright+Chrome | §5.1 | 已筛选 | 搜索→重置 | 条件清空;列表恢复 | | ZCZX-XMZYGL-UI-006 | 新增 | 动态表单-兽医 | UI 测试 | Playwright+Chrome | §5.4 | 有 add 权限 | 新增→选兽医→填必填→上传照片→确定 | 成功;列表未发布;含接诊方式等字段 | | ZCZX-XMZYGL-UI-007 | 新增 | 动态表单-团队 | UI 测试 | Playwright+Chrome | §5.5 | 已登录 | 新增→选专家团队→填必填→确定 | 无接诊方式字段;成功 | | ZCZX-XMZYGL-UI-008 | 新增 | 类型切换字段变化 | UI 测试 | Playwright+Chrome | §4.3 | 打开新增 | 选兽医→改选设备 | 表单字段集切换;无兽医专属项残留 | | ZCZX-XMZYGL-UI-009 | 新增 | 必填校验 | UI 测试 | Playwright+Chrome | §5.2 | 新增弹窗 | 留空姓名→确定 | 校验失败;不关闭 | | ZCZX-XMZYGL-UI-010 | 新增 | 照片格式/大小 | UI 测试 | Playwright+Chrome | §5.2 | 新增 | 上传非图或超 10MB(若可测) | 失败提示 | | ZCZX-XMZYGL-UI-011 | 查看 | 只读详情 | UI 测试 | Playwright+Chrome | §5.9 | 任意行 | 点击查看 | 字段只读;含发布状态、审计信息 | | ZCZX-XMZYGL-UI-012 | 操作列 | 未发布按钮集 | UI 测试 | Playwright+Chrome | §6 | 未发布行 | 查看操作列 | 有查看、编辑、删除、发布;兽医/机构有分配账号 | | ZCZX-XMZYGL-UI-013 | 操作列 | 已发布按钮集 | UI 测试 | Playwright+Chrome | §6 | 已发布行 | 查看操作列 | 有查看、下架;无编辑、删除、分配账号 | | ZCZX-XMZYGL-UI-014 | 编辑 | 未发布修改 | UI 测试 | Playwright+Chrome | §5.8 | 未发布行 | 编辑→改介绍→确定 | 列表已更新 | | ZCZX-XMZYGL-UI-015 | 编辑 | 已发布不可进 | UI 测试 | Playwright+Chrome | §5.8 | 已发布行 | 尝试编辑 | 无编辑入口或提示先下架 | | ZCZX-XMZYGL-UI-016 | 发布下架 | 发布确认 | UI 测试 | Playwright+Chrome | §5.11 | 未发布行 | 发布→确认 | 状态变已发布 | | ZCZX-XMZYGL-UI-017 | 发布下架 | 下架确认 | UI 测试 | Playwright+Chrome | §5.11 | 已发布行 | 下架→确认 | 状态变已下架或未发布标签 | | ZCZX-XMZYGL-UI-018 | 删除 | 确认删除 | UI 测试 | Playwright+Chrome | §5.10 | 未发布行 | 删除→确认 | 行消失;取消则不删 | | ZCZX-XMZYGL-UI-018a | 删除 | 已分配联动删账号 | UI 测试 | Playwright+Chrome | §5.10、草稿 §10 | 未发布已分配兽医 | 删除→确认 | 列表无该行;该登录名不可再登录 | | ZCZX-XMZYGL-UI-019 | 分配账号 | 兽医分配 | UI 测试 | Playwright+Chrome | §5.12 | 未发布未分配兽医 | 点分配账号→确认 | 成功提示;行显示已分配 | | ZCZX-XMZYGL-UI-020 | 分配账号 | 团队无入口 | UI 测试 | Playwright+Chrome | §5.12 | 专家团队 Tab | 查看操作列 | 无分配账号 | | ZCZX-XMZYGL-UI-021 | 地图标点 | 本期不展示 | UI 测试 | Playwright+Chrome | §5.13 | 机构/设备 Tab | 查看列表操作 | 无地图标点或置灰并说明 | | ZCZX-XMZYGL-UI-022 | 权限 | 只读角色 | UI 测试 | Playwright+Chrome | §6 | 仅 list/query 角色 | 进入模块 | 无新增/编辑/删除/发布/下架/分配账号 | | ZCZX-XMZYGL-UI-023 | 端到端 | 运营全流程 | UI 集成 | Playwright+Chrome | §4.2 | 权限齐备 | 新增机构→分配账号→发布→下架→编辑→再发布→删除 | 状态与按钮符合矩阵;无报错 | --- ## 四、覆盖对照 | 类别 | 单元 UT | 接口 API | 界面 UI | | --- | --- | --- | --- | | 正常流程 | UT-013~018 | API-007~010、016、019、023~030 | UI-006~011、014、016~019、023 | | 异常/校验 | UT-001~008 | API-011~013、017~018、022~024 | UI-009~010、015 | | 发布状态机 | UT-009~011 | API-003~004、019~022、029 | UI-004、012~017 | | 分配账号 | UT-012、018 | API-025~028 | UI-019~020 | | 四类资源 | UT-007 | API-007~010 | UI-006~008 | | 列表筛选 | UT-019~020 | API-001~006 | UI-001~005 | | 逻辑删除 | UT-016~017、019 | API-005、023~024、023a | UI-018、018a | | 权限/鉴权 | — | API-031~033 | UI-022 | | 地图标点(不做) | — | — | UI-021 | --- ## 五、功能需求追溯 | 需求章节 | 要点 | 主要用例 | | --- | --- | --- | | §5.1 列表 | Tab、模糊、发布状态筛选 | API-001~006;UI-001~005 | | §5.2~5.7 新增/字段 | 四类表单、校验 | UT-001~008;API-007~013;UI-006~010 | | §5.8 修改 | 仅未发布/已下架 | API-016~018;UI-014~015 | | §5.9 查看 | 只读 | API-014~015;UI-011 | | §5.10 删除 | 逻辑删 | UT-016~017;API-023~024;UI-018 | | §5.11 发布下架 | 状态迁移 | UT-009~011、014~015;API-019~022、029;UI-016~017 | | §5.12 分配账号 | 兽医/机构、一次 | UT-012、018;API-025~028;UI-019~020 | | §5.13 地图标点 | 不做 | UI-021 | | §6 权限 | 按钮级 | API-031~033;UI-022 | --- ## 六、Playwright 实施提示 - 安装:`npm i -D @playwright/test`;`npx playwright install chrome`。 - 配置:`use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' }`;`storageState` 复用登录态。 - 路由:`page.goto('/diseaseTreatment/medicalResource')`(以菜单 `component` 为准)。 - 定位示例:`page.getByRole('tab', { name: '兽医人员库' })`;`page.getByRole('button', { name: '新增' })`;`page.getByLabel('兽医姓名')`。 --- ## 七、修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版:单元 20、接口 34、UI 23;覆盖 CRUD、发布下架、分配账号、四类动态表单;Playwright+Chrome | | 1.1 | 对齐草稿 §10/§11:删除联动删账号用例;分配角色 100/102 断言;UT/API/UI 编号顺延 |