Case Generator 测试自动化平台

Case Generator 是一站式测试自动化平台,把「接口测试、Web 测试、App 测试、测试编排、报告分析」集中在一个界面里,并支持把执行任务分发到多台执行节点,实现分布式运行。本文档面向平台使用者,介绍各模块的功能与操作步骤。

演示地址:http://111.229.124.219:8000/

账号 : test

密码:123456
一、平台简介

1.1 能做什么

  • 接口测试:集合化管理请求,支持环境变量、断言、前后置处理器(签名、JAR、SQL、脚本、提取),支持 cURL / Postman / OpenAPI / Excel 导入导出。
  • Web 测试:Playwright / Selenium 驱动,支持手动编排、AI 生成、可视化录制、断点调试、元素抓取。
  • App 测试:支持 Android / iOS / 鸿蒙 NEXT,驱动含 UiAutomator2 / XCUITest / Hypium / HDC,同样支持编排、AI 生成、录制与调试。
  • 测试编排:把接口、Web、App 步骤组合成场景,支持条件判断、循环、参数化、调用子场景、设置/提取变量。
  • 分布式执行:主服务 + 若干执行节点(agent),步骤可指定在某个节点上运行。
  • 测试报告:记录每次执行的步骤明细、断言、截图、变量快照,可下载 TXT / HTML。

1.2 界面布局

平台首页(左侧导航 + 顶部操作区)

  • 左侧为导航菜单(由系统菜单配置驱动),顶部为页面标题与用户信息,右上角可退出登录。
  • 每个页面顶部是操作按钮区,主体是内容区。
  • 删除类操作都会弹出二次确认;操作结果以轻提示(Toast)反馈。
  • 移动端会自动切换为抽屉式菜单。

1.3 建议使用流程

  1. 在「环境管理」中创建接口环境,配置 base_url 与变量。
  2. 在「接口测试」中调试单个接口,保存到接口集合。
  3. 在「测试编排」中新建场景,把接口 / Web / App 步骤组合起来。
  4. 需要分布式运行时,在「节点管理」添加执行节点,并在步骤中选择节点。
  5. 执行场景,在「执行日志 / 测试报告」中查看结果。

二、快速开始

2.1 登录

打开浏览器访问平台地址(如 http://服务器IP:8000),输入用户名与密码登录。首次部署后可用 createadmin 命令创建管理员账号。

2.2 权限说明

  • 系统内置三种角色:管理员(admin,全部权限)、操作员(operator,可操作任务)、查看者(viewer,只读)。
  • 菜单与权限由数据库驱动,可在「角色权限」中为角色勾选具体权限。
  • 权限标识为空的菜单对所有登录用户可见。

⚠ 菜单或权限调整后,需要执行 init_menu_permissions 命令使其生效。
三、接口测试

3.1 集合与请求

接口测试:集合 / 请求 / 响应与断言

接口测试页左侧是集合与请求列表,右侧是请求编辑区。

  1. 点击「+ 新建集合」创建集合;在集合下点击「+ 新建请求」。
  2. 选择请求方法(GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS),填写 URL。
  3. 在 Params / Headers / Body 标签页填写请求参数。
  4. 点击「发送」查看响应;确认无误后点击「保存」。
  • URL 支持 {{变量名}} 占位符;选择环境后,相对路径会自动拼接环境的 base_url。
  • 点击集合旁的运行按钮可运行整个集合,并生成可分享的运行链接。
  • 勾选左侧请求可「批量删除」。

3.2 环境与变量

环境管理:基础 URL 与环境变量

  1. 进入「环境管理」,点击「+ 新建环境」,填写名称、基础 URL、环境变量(JSON)。
  2. 点击某环境的「启用」,将其设为当前环境。
  3. 在接口测试页顶部选择环境后,即可用 {{变量名}} 引用变量。

|----------------|-----------------------------------------------|
| 配置项 | 说明 |
| 环境名称 | 便于识别的名称 |
| 基础 URL | 接口的域名前缀,如 https://api.example.com |
| 环境变量 | JSON 格式,如 {"token": "abc"},在请求中以 {{token}} 引用 |

3.3 断言

在「断言」标签页添加断言规则,用于校验响应是否符合预期:

  • 状态码断言:期望 HTTP 状态码。
  • 响应包含:响应体中包含指定文本。
  • JSON 路径:按 JSONPath 取值并与期望比较。
  • 响应时间:限制最大响应耗时。

⚠ 断言失败不会中断请求发送,只在断言结果中标记 PASS / FAIL。

3.4 前置 / 后置处理器

前置处理器在发送前执行,后置处理器在收到响应后执行,均支持多种类型:

|----------------|----------------------------------------------|
| 处理器 | 用途 |
| 设置变量 | 给变量赋值,值可用 {{表达式}} |
| 生成签名 | MD5/SHA1/SHA256/HMAC 等算法,结果写入变量 |
| 调用 JAR | 调用已上传 JAR 包的指定方法(如加解密) |
| 自定义脚本 | 执行 Python 脚本,可访问 vars / request / response |
| SQL 查询 | 执行 SQL 并把结果写入变量 |
| 提取数据 | 从响应 Body/Status/Headers 按 JSONPath、正则或截取提取变量 |

⚠ 每个处理器都有「启用」开关,按顺序执行;后置处理器常用于提取 token 供后续接口使用。

3.5 cURL 导入导出

  • 导入:粘贴 cURL 命令,自动解析方法、URL、请求头、Cookie、Body;带域名时自动创建环境。
  • 导出:根据当前编辑内容生成 cURL 命令并复制。

3.6 JAR 包管理

在「JAR包管理」上传 .jar 文件,填写名称与全限定类名,供处理器的「调用 JAR」使用。

3.7 接口报告

接口报告列表

集合运行或链接运行会产生执行报告,在「接口报告」中查看,支持下载 TXT / HTML。
四、 Web 测试

Web 测试页顶部是共享配置栏,下方分为「手动编排、AI生成、录制、调试」四个标签页。

4.1 顶部配置

|---------------------|-------------------------------------------------------------------|
| 配置项 | 说明 |
| 驱动 | Playwright (Chromium) / Selenium (Chrome) / Selenium (Firefox) |
| 无头模式 | 勾选则不显示浏览器窗口(服务器无桌面时建议勾选) |
| 反检测指纹 | 注入反自动化脚本,降低被网站识别风险 |
| 超时 / 间隔 | 页面与操作超时(秒)、动作间隔(毫秒) |
| 执行节点 | 选择在本机或某台执行节点上运行;切换后会重开浏览器 |
| 远程浏览器 | Grid(http://ip:4444) / Playwright(ws://...) / CDP(http://ip:9222) |
| URL | 要打开或录制的页面地址 |

⚠ CDP 远程浏览器只能配合 Playwright 驱动;Selenium 的远程地址是 Grid / WebDriver 协议。

4.2 手动编排

Web 测试:手动编排与共享配置栏

  1. 填写 URL(或加载已有场景),点击「+ 添加动作」。
  2. 选择动作类型并填写参数:打开页面、点击、输入文本、等待、断言、获取文本、滚动、按键、下拉选择、前进/后退/刷新、切换标签页、进出 iframe 等。
  3. 定位方式支持 CSS、XPath、id、name、角色、标签、文本、链接文本、占位符、data-testid。
  4. 点击「执行」运行,控制台会实时输出结果;满意后「保存到当前场景」或「保存到场景」。
  • 「JSON模式」可在可视化与 JSON 之间切换编辑。
  • 多选动作后可批量复制 / 启用 / 禁用 / 删除。
  • 每个步骤分组可单独配置执行节点与远程浏览器。

4.3 AI 生成

在「AI生成」页用自然语言描述测试场景,点击「AI 生成」。系统会结合当前浏览器页面元素生成真实可用的选择器。生成后可「采纳到编排」或「复制 JSON」。

⚠ 使用 AI 生成前,建议先执行或录制打开目标页面,以便获取真实元素。

4.4 录制

Web 录制:浏览器画面 + 已录制操作

  1. 在顶栏填写要录制的 URL。
  2. 切到「录制」页,点击「开始录制」,系统打开浏览器并注入录制器。
  3. 在浏览器中手动操作,页面上的点击、输入等会被记录。
  4. 回到平台查看「已录制操作」列表,双击可编辑;可逐条「执行」验证。
  5. 确认后「采纳到编排」或「导出 JSON」。

4.5 调试

Web 调试:断点、单步与画面

「调试」页用于逐步排查脚本问题:

  • 「开始调试」后可按「单步」「继续」「运行全部」执行;「停止」「重置」控制流程。
  • 点击步骤前的圆点设置断点,命中后暂停并显示当前浏览器画面。
  • 底部控制台输出每步结果。

4.6 元素抓取

点击顶栏「抓取元素」,可抓取当前页面的可交互元素,支持按文本或选择器过滤,用于快速获取定位信息。
五、 App 测试

App 测试页顶部选择设备并连接,支持「手动编排、AI生成、录制、调试」四个标签页。

5.1 设备管理

App 设备管理

  1. 进入「App测试」→ 顶部「设备管理」。
  2. 点击「+ 新建设备」,选择平台(Android / iOS / 鸿蒙 NEXT)与驱动类型。
  3. 按平台填写连接配置:Appium Server、设备名、UDID、系统版本、包名/Activity/Bundle 等。
  4. 保存后回到 App 测试页,选择设备并点击「连接」。

|-----------------|--------------|-------------------------------------------------|
| 平台 | 驱动类型 | 关键配置 |
| Android | UiAutomator2 | Appium Server、设备名、UDID、包名、Activity |
| iOS | XCUITest | Appium Server、设备名、UDID、Bundle ID |
| 鸿蒙 NEXT | Hypium / HDC | Bundle Name、Ability Name;HDC 时可填 HDC Server 与端口 |

⚠ 「连接」成功后才能录制、调试和执行;当前激活设备是步骤留空时的默认设备。

5.2 元素库

App 元素库

在「元素库」维护可复用的元素定位,供 App 测试与场景步骤引用。定位方式支持 accessibility_id、resource_id、xpath、by_id(鸿蒙)、by_text(鸿蒙)、class_name。

5.3 手动编排 / AI 生成

App 测试工作台

  1. 填写 App 包名与 Activity/Bundle(也可由设备详情自动带入)。
  2. 点击「+ 添加动作」,选择动作类型:启动应用、点击、输入文本、滑动、查找元素、断言、截图、返回、回到桌面、进入后台、长按、滚动、隐藏键盘、获取文本、等待、安装应用。
  3. 点击「执行」在设备上运行;可「从元素库选择」快速填入定位。
  4. 满意后保存到场景。

「AI生成」页输入自然语言描述,点击「AI 生成用例」,可「试跑」验证或「采纳到编排」。

5.4 录制

  1. 连接设备后进入「录制」页,点击「开始录制」。
  2. 在设备截图区操作(点击、输入、滑动),或使用「返回 / 回到桌面 / 进入后台」手势按钮。
  3. 已录制操作列表双击可编辑动作类型与内容;确认后「采纳到编排」或「导出 JSON」。

5.5 调试

  • 「开始调试」后支持单步、继续、停止、重启、刷新截图、开始录屏。
  • 点击步骤圆点设置断点;右侧显示设备截图;底部可查看变量、调用栈并做表达式求值(如 vars.token)。

六、测试编排

6.1 场景管理

测试编排:场景列表

  1. 进入「测试编排」,点击「新建场景」,填写名称与描述。
  2. 点击场景的「编排」进入步骤编辑页。
  3. 点击「执行」运行场景,页面会实时显示执行日志;执行中可「停止」。
  4. 点击「日志」查看历史执行报告。
  • 支持按名称/描述搜索、分页,以及批量删除、批量复制(含步骤)。
  • 同一场景正在执行时再次执行会被拒绝(409)。

6.2 步骤类型

场景步骤编排

在编排页底部「添加步骤」可选择以下类型:

|----------------|---------------------------------|
| 步骤类型 | 作用 |
| 接口测试 | 选择集合与请求,可配置断言规则 |
| Web 测试 | 配置驱动、URL、动作序列;可指定执行节点/远程浏览器 |
| App 测试 | 配置设备、包名、动作序列;可指定执行节点 |
| 调用场景 | 调用另一个场景(含自递归),可设退出条件 |
| 条件判断 | 按变量比较结果跳转到指定步骤 |
| 循环 | 固定次数 / 遍历列表 / 条件循环,指定循环体步骤 |
| 参数化 | 按 CSV / 手动表格 / 数字范围驱动循环体,字段作为变量 |
| 设置变量 | 给变量赋值(支持 {{表达式}}) |
| 提取数据 | 从响应或变量中按 JSONPath/正则/截取提取变量 |

⚠ 步骤类型创建后不可修改;可用拖拽手柄调整顺序,禁用步骤执行时会跳过。

6.3 变量与表达式

  • 通用占位符:{{变量名}}。
  • 内置引用:last_response.body / last_response.status / last_response.headers,vars.xxx
  • 循环与参数化会生成对应变量,供循环体步骤引用。

6.4 执行与调试

  1. 在编排页点击「执行场景」运行;点击「停止执行」中断。
  2. 点击「调试」打开调试弹窗:开始调试 / 单步 / 继续 / 重启 / 停止。
  3. 在步骤列表点击圆点设置断点(含子步骤断点),右侧显示浏览器/设备画面。
  4. 底部「日志 / 变量 / 详情」标签页可查看执行明细。

七、分布式执行(执行节点)

当需要在其它机器上运行(例如目标内网、有设备或可见浏览器的机器),可部署执行节点。

7.1 部署执行节点

  1. 在目标机器拉取同一套项目代码,安装依赖。
  2. Windows 运行 agent.bat;Linux 用 daphne 启动 web.asgi:application,端口默认 8001。
  3. 设置与主服务一致的 AGENT_TOKEN 环境变量。
  4. 将节点地址通过公网 / 内网 / ngrok 暴露给主服务。

⚠ AGENT_TOKEN 为空时所有 /api/agent/* 请求都会被拒绝(403);修改 token 后主服务与节点都要重启。

7.2 节点管理

节点管理:执行节点 / 远程浏览器

  1. 进入「节点管理」,点击「+ 新建执行节点」。
  2. 填写名称、节点地址(如 http://ip:8001)、Token(与节点一致)、支持的平台/驱动。
  3. 保存后点击「检测」验证连通性。

在 Web/App 测试页顶部或步骤配置中选择「执行节点」,即可把运行分发到该节点。

7.3 远程浏览器

「远程浏览器」用于复用一台已经打开的浏览器:

|------------------------------------------|----------------|------------|
| 类型 | 地址格式 | 适用驱动 |
| Selenium Grid / 远程 WebDriver | http://ip:4444 | Selenium |
| Playwright 远程 | ws://ip:port | Playwright |
| Chrome CDP | http://ip:9222 | Playwright |

  1. 在目标机器用 cdp-browser.bat 启动 Chrome 调试浏览器(默认端口 9222)。
  2. 在「节点管理 → 远程浏览器」新增该地址。
  3. 在 Web 测试顶栏选择「远程浏览器」,执行时即驱动该浏览器,不再新开窗口。

八、测试报告

每次场景执行都会生成报告,展示:

  • 概览:场景名称、执行时间、状态、耗时。
  • 步骤结果:按步骤展开,接口步骤显示请求/响应/断言明细;Web/App 步骤显示动作明细与截图。
  • 变量快照与错误信息。
  • 点击截图可放大查看(Lightbox)。

报告支持下载 TXT 与 HTML。接口来源的报告在「接口报告」中,场景来源的报告在场景「执行日志」中。
九、系统管理

9.1 用户管理

用户管理

维护平台用户与角色,可新建、编辑、启用/禁用、删除(不能删除自己)。用户可拥有多个角色,权限为各角色权限的并集。

9.2 角色与权限

角色权限配置

  • 角色管理:新建/编辑角色,系统内置角色不可删除。
  • 角色权限:左侧选角色,右侧勾选权限(菜单/按钮/接口),保存生效。
  • 权限管理:维护原子权限(编码格式 resource:action)。

9.3 菜单管理

维护侧栏菜单结构(支持父子层级)。菜单标识、图标、URL 名称、权限标识、排序、可见性均可配置。

⚠ 新增页面需在 base.html 的 urlMap 中登记 URL 名称,并执行 init_menu_permissions。

9.4 个人信息

查看和修改个人资料、上传头像、修改密码。
十、常见问题( FAQ

Q :执行节点检测失败或提示 403

A:确认节点上的 AGENT_TOKEN 与主服务一致,且节点进程已重启;确认节点地址可被主服务访问。

Q Web 录制时看不到浏览器窗口

A:取消勾选「无头模式」;若服务器无桌面(如 Linux 服务器),需要把执行节点选到有桌面的机器,或设置 WEB_RECORD_HEADLESS=1 使用无头录制。

Q CDP 远程浏览器连接失败

A:确认目标已用 cdp-browser.bat 启动、端口可达,且驱动选择 Playwright。

Q :鸿蒙设备连接报未安装 Hypium

A:在执行节点所在机器的 Python 环境中安装 Hypium(华为私有包),并让 agent 使用该环境。

Q App 步骤执行时提示设备未连接

A:先在 App 测试页连接设备;场景步骤中设备留空时使用当前激活设备。

Q :菜单点进去回到首页

A:该菜单的 URL 名称未在 base.html 的 urlMap 中登记,补充后刷新。

Q :接口请求中变量没有替换

A:确认已选择环境、变量名拼写正确,且环境变量为合法 JSON。

相关推荐
志栋智能2 小时前
超自动化运维与DevOps的深度融合
运维·网络·人工智能·安全·自动化
Flynt2 小时前
Astra 自主跑了 35 小时烧掉 40 亿 token,产出为零:我给 Agent 加了三道闸
python·aigc·agent
mldong2 小时前
Python 开发者也有自己的轻量工作流引擎了:pip install 一行,5 分钟跑通一条审批流
后端·python·架构
weixin199701080163 小时前
《跨境二手ERP的3种对接模式:自研API / SaaS中间件 / 平台认证服务商,怎么选?》(附Python源码)
开发语言·python·中间件
Allen_LVyingbo3 小时前
医疗人工智能项目全生命周期管理系统:监管知识建模、工程实现与实证评估(上)
网络·人工智能·机器学习·语言模型·自动化
B2_Proxy3 小时前
Python 爬虫代理中间件开发:统一处理 403、429 与自动重试机制
python
学代码的CJY3 小时前
Python序列类型详解
python
529宝宝起名网3 小时前
用 Python 爬取古籍文献中的名字用例数据库:从二十四史到诗词文集的历史名字采集与分析
python
海宇服务9 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化