CaseHUB 接口与UI自动化测试平台,旨在为测试团队提供一站式自动化测试解决方案。平台集成了接口测试、UI自动化测试、定时任务调度、测试报告生成等核心功能,支持灵活的测试流程编排和丰富的断言验证能力,帮助团队提升测试效率,保障软件质量。
🔗 前端项目地址
- 支持多种HTTP请求类型:GET、POST、PUT、DELETE、PATCH等
- 灵活的参数配置:URL、Header、Query、Body等
- CURL命令解析导入,快速生成测试用例
- 变量提取:从响应数据中提取变量,支持JSONPath、JMESPath等多种提取方式
- 变量引用:在后续请求中灵活引用提取的变量
- 全局变量:跨用例、跨项目的变量共享机制
- 函数变量:支持自定义函数生成动态变量
- 状态码断言:验证HTTP响应状态码
- 内容断言:验证响应体内容,支持JSONPath、JMESPath表达式
- 变量断言:验证变量值的正确性
- SQL断言:验证数据库查询结果
- 前后置脚本:在用例执行前后执行自定义Python脚本
- SQL执行:支持在测试流程中执行SQL语句
- 条件判断:根据条件动态控制测试流程
- 循环执行:支持LOOP循环执行器
- 等待机制:支持步骤等待功能
- 支持引用公共API和API组
- 支持添加私有API
- 支持逻辑判断、脚本执行、等待等步骤
- 支持用例拖拽排序和复制
- 调试模式:逐步执行测试用例,实时查看日志
- 同步执行:实时展示测试日志,便于问题排查
- 异步执行:后台执行任务,支持轮询结果
- 单用例/批量执行:灵活的执行方式
- 定时任务:基于APScheduler的定时任务调度
- 任务池管理:支持任务池管理和调度
- 测试报告:自动生成HTML格式测试报告
- 结果推送:支持企业微信等多种推送方式
- 基于Playwright的浏览器自动化测试
- 支持Chrome、Firefox、Safari等主流浏览器
- 支持无头模式和运行日志可视化模式
- 步骤录入:可视化录入测试步骤
- 公共步骤:创建和管理可复用的公共步骤
- 步骤拖拽:灵活调整步骤执行顺序
- 步骤组:支持步骤组管理,提升复用性
- 前后置接口请求:每个步骤可关联前后置接口
- SQL操作:支持在UI测试中执行SQL(开发中)
- 条件判断:支持IF条件判断执行特定步骤
- 环境配置:支持多环境切换
- 方法配置:自定义UI测试方法
- 任务调度:支持UI测试任务的定时执行
- 用例CRUD:完整的用例增删改查功能
- 用例复制:快速复制已有用例
- 用例拖拽:灵活调整用例顺序
- 用例关联:关联需求,实现需求追溯
- 用例库管理:集中管理测试用例
- 动态生成:支持用例动态生成
- 用例分类:支持模块化用例管理
- Mind Map:集成脑图功能用于测试用例编写(开发中)
- 集成Locust性能测试框架
- 压测任务创建和执行
- 待完成:数据记录、断言、变量等
| 类别 | 技术 | 版本 |
|---|---|---|
| 后端框架 | FastAPI | 0.121.3 |
| 编程语言 | Python | 3.12+ |
| HTTP客户端 | Httpx | 0.28.1 |
| UI自动化 | Playwright | 1.56.0 |
| 数据库 | MySQL | 8.0+ |
| 缓存 | Redis | 7.1.0 |
| ORM | SQLAlchemy | 2.0.44 |
| 定时任务 | APScheduler | 3.10.4 |
| 异步任务 | Celery | 5.4.0 |
| 性能测试 | Locust | 2.42.5 |
| 日志 | Loguru | 0.7.3 |
| 数据验证 | Pydantic | 2.12.4 |
case_auto_hub/
├── app/ # 应用核心模块
│ ├── controller/ # 控制器层
│ │ ├── interface/ # 接口测试相关接口
│ │ ├── play/ # UI自动化相关接口
│ │ ├── caseHub/ # 用例管理相关接口
│ │ ├── project/ # 项目管理相关接口
│ │ └── user/ # 用户管理相关接口
│ ├── mapper/ # 数据访问层
│ ├── model/ # 数据模型
│ ├── schema/ # 数据验证Schema
│ ├── scheduler/ # 定时任务调度
│ └── ws/ # WebSocket服务
├── croe/ # 核心执行引擎
│ ├── interface/ # 接口执行引擎
│ │ ├── executor/ # 执行器
│ │ ├── manager/ # 管理器(断言、变量、条件等)
│ │ └── builder/ # 请求构建器
│ └── play/ # UI执行引擎
├── common/ # 公共工具
│ ├── httpxClient.py # HTTP客户端
│ ├── mysqlClient.py # MySQL客户端
│ ├── redisClient.py # Redis客户端
│ └── notifyManager.py # 通知管理器
├── utils/ # 工具类
├── enums/ # 枚举定义
├── resource/ # 资源文件
├── script/ # 脚本文件
├── config.py # 配置文件
├── main.py # 应用入口
└── run.py # 启动脚本
MySQL
# 创建数据库
CREATE DATABASE autoHub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Redis
# 确保Redis服务已启动
redis-serverPython
# 确保Python版本 >= 3.12
python --version# 克隆项目
git clone https://github.com/yourusername/case_auto_hub.git
cd case_auto_hub
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirment.txt编辑 config.py 文件,根据本地环境进行配置:
class LocalConfig(BaseConfig):
# 服务器配置
SERVER_HOST: str = "127.0.0.1"
SERVER_PORT: int = 5050
DOMAIN = f"http://{SERVER_HOST}:{SERVER_PORT}"
# 任务配置
TASK_WORKER_POOL_SIZE = 10
# 代理录制
Record_Proxy = False
# MySQL配置
MYSQL_SERVER = "127.0.0.1"
MYSQL_PASSWORD = "your_password"
# Redis配置
REDIS_DB = 0
REDIS_SERVER = "127.0.0.1"
REDIS_URL: str = f"redis://{REDIS_SERVER}:{BaseConfig.REDIS_PORT}/{REDIS_DB}"
# Oracle客户端(可选)
CX_Oracle_Client_Dir = "/your/instantclient_23_3"
# UI自动化配置
INIT_PLAY_BROWSER = False
UI_Headless = True
UI_Timeout = 10000
UI_SLOW = 500
# 定时任务配置
APS = False
APS_TZ = pytz.timezone('Asia/Shanghai')执行初始化SQL脚本:
# 执行初始化脚本
mysql -u root -p autoHub < script/initSQL.sql初始化脚本会创建默认管理员账户:
- 用户名:
admin - 密码:
admin123
使用run.py启动(推荐开发环境)
python run.py启动成功后,访问:
- API文档:http://127.0.0.1:5050/docs
- 前端页面:部署前端项目后访问
参考 前端项目 进行前端部署。
展示所有接口的概览,支持快速筛选和搜索。
查看单个接口的详细信息,包括请求参数、响应示例等。
从响应数据中提取变量,支持多种提取方式。
强大的断言功能,支持多种断言类型。
支持在URL、Header、Query、Body、SQL中写入变量。
可视化变量引用功能,提升用例编写效率。
支持CURL命令解析导入,快速生成测试用例。
在UI中直接执行接口请求,快速验证API可用性。
支持引用公共API、添加私有API、引用API组、添加逻辑判断、脚本执行、等待等。
支持同步执行和后台执行,实时展示测试日志。
任务可关联多个API用例,支持定时任务执行和结果推送。
生成并展示任务执行后的详细报告。
支持配置方法、环境、公共步骤、操作任务的调度,支持步骤拖拽排序。
完整的用例管理功能,支持增删改查、复制、拖拽等。
集成脑图功能用于测试用例编写(开发中)。
展示业务步骤的详细执行结果。
展示业务步骤的详细执行日志。
任务与定时任务分离,支持任务池管理。
# MySQL配置
MYSQL_SERVER = "127.0.0.1"
MYSQL_PORT = 3306
MYSQL_PASSWORD = "your_password"
MYSQL_DATABASE = 'autoHub'
# 异步MySQL连接
ASYNC_SQLALCHEMY_URI = f'mysql+aiomysql://root:{MYSQL_PASSWORD}@{MYSQL_SERVER}:{MYSQL_PORT}/{MYSQL_DATABASE}'# Redis配置
REDIS_SERVER = "127.0.0.1"
REDIS_PORT = 6379
REDIS_DB = 0
REDIS_URL: str = f"redis://{REDIS_SERVER}:{REDIS_PORT}/{REDIS_DB}"
# Redis Broker(用于Celery)
REDIS_Broker: str = f"redis://{REDIS_SERVER}:{REDIS_PORT}/1"
REDIS_Backend: str = f"redis://{REDIS_SERVER}:{REDIS_PORT}/2"# UI自动化配置
INIT_PLAY_BROWSER = False # 是否初始化浏览器
UI_Headless = True # 是否使用无头模式
UI_Timeout = 10000 # 超时时间(毫秒)
UI_SLOW = 500 # 慢动作延迟(毫秒)# 定时任务配置
APS = False # 是否开启定时任务
APS_TZ = pytz.timezone('Asia/Shanghai') # 时区
# Redis JobStore
APSJobStores = {
'default': RedisJobStore(
db=1,
jobs_key='apscheduler.jobs',
run_times_key='apscheduler.run_times',
host=REDIS_SERVER,
port=REDIS_PORT,
password=None
)
}# 任务池配置
TASK_WORKER_POOL_SIZE = 10 # 工作线程池大小
REDIS_WORKER_POOL_BD = 10 # Redis工作池数据库# 企业微信配置
WeChatBaseUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send"
# 邮件配置
Email_Sender_Username = "[email protected]"
Email_Sender_Password = "your_password"
Smtp_Server = "smtp.163.com"
Smtp_port = 578- 接口运行拆分重构
- 接口添加执行器LOOP
- Task与定时任务分离(API大致完成)
- 新增JOB模型
- 新增任务池
- 重写APScheduler
- 业务步骤详情结果展示优化
- 日志优化(优化了些细节)
- 增加指定(api、case、task)环境运行能力
- 步骤等待、脚本录入能力
- 接口用例执行重构
- 若干数据库字段更改
- 接口执行调整
- 添加步骤变量判断能力
- 测试用例能力
- 添加了用例的基本增删改查
- 复制、拖拽等
- 用例动态生成
- 关联需求
- 用例库
- 新增用例管理CRUD
- UI自动化进行了重写
- 接口执行使用了接口功能、不在自定义
- 添加了UI组能力执行
- 整体UI页面优化
- 集成Locust压测(半成品)
- 待完成:数据记录、断言、变量等
- 断言重构
- 支持JMESPath
- 支持变量断言
- UI重构
- 优化前端代码、接口修改操作优化
- 添加DB链接测试接口
欢迎贡献代码、提出问题或建议!
- Fork本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
如果您有任何问题或建议,欢迎通过以下方式联系我:
- 微信:

- GitHub Issues:提交问题























