# apitest-platform **Repository Path**: aiagentdemo/apitest-platform ## Basic Information - **Project Name**: apitest-platform - **Description**: 仿 Apifox 的接口自动化测试平台,保留接口自动化测试核心能力,并新增两个 AI 功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-17 - **Last Updated**: 2026-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ApiForge · 接口自动化测试平台 仿 Apifox 的接口自动化测试平台,保留接口自动化测试核心能力,并新增两个 AI 功能: **AI 按接口 Schema 构造数据** 与 **AI 生成接口测试用例**。 - 后端:Python · FastAPI · SQLAlchemy · **MySQL** - 前端:Vue 3 · Vite(浅色科技风,Apifox 式布局) - 大模型:复用万擎(OpenAI 兼容),无 key 时自动降级 mock --- ## 界面预览 ![接口自动化测试平台](./screenshot.png) ## 功能 | 模块 | 说明 | | --- | --- | | 用户与项目 | JWT 注册/登录,数据按用户 + 项目隔离 | | 接口管理 | 接口 CRUD、分组、方法/路径/头/查询参数/请求体/参数 Schema | | 接口调试 | 后端用 httpx 真实发请求,支持 `{{变量}}` 环境替换,返回状态码/头/体/耗时 | | 测试用例 | 单接口用例 + 断言(status / jsonpath / header / response_time / contains) | | 测试场景 | 多接口串联,用 JSONPath 提取响应写入变量,供后续步骤引用,顺序执行 | | 环境变量 | 多环境变量组,一键切换当前环境 | | 测试报告 | 用例/场景运行记录、断言明细、通过率统计 | | ✦ AI 造数据 | 按接口参数 Schema 生成正常/边界/异常多组请求数据 | | ✦ AI 生成用例 | 按接口定义生成带断言的测试用例并落库 | --- ## 目录结构 ``` apitest-platform/ ├── backend/ # FastAPI 后端 │ ├── app/ │ │ ├── core/ # 配置、DB、安全(JWT/bcrypt)、依赖 │ │ ├── models/ # SQLAlchemy 模型 │ │ ├── schemas/ # Pydantic │ │ ├── api/ # auth / projects / endpoints / tests / ai 路由 │ │ ├── services/ # 请求执行 + 断言 + JSONPath 提取引擎 │ │ └── llm/ # 万擎(OpenAI 兼容) + mock 降级 │ ├── main.py │ ├── requirements.txt │ └── .env.example └── frontend/ # Vue3 前端 └── src/{views,api.js,store.js,router.js} ``` --- ## 后端启动 ### 1. 准备 MySQL 在你本机/服务器上建库(字符集 utf8mb4): ```sql CREATE DATABASE apitest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 表会在服务启动时由 SQLAlchemy 自动创建,无需手写建表语句。 ### 2. 配置环境变量 ```bash cd backend cp .env.example .env ``` 编辑 `.env`: ```ini # MySQL 连接串(按你的库改) DATABASE_URL=mysql+pymysql://root:你的密码@127.0.0.1:3306/apitest?charset=utf8mb4 SECRET_KEY=换成一段足够长的随机串 # 万擎大模型(OpenAI 兼容) LLM_BASE_URL=https://xxx.xxx.com/api/agent/v1/apps LLM_MODEL=xxxxx LLM_API_KEY=你的key LLM_FALLBACK_TO_MOCK=true # 无 key / 无网络时降级 mock,保证可跑通 ``` > 未装 MySQL 想先跑通?把 `DATABASE_URL` 改成 `sqlite:///./apitest.db` 即可,同一套模型两种库都能建表。 ### 3. 安装依赖并启动 ```bash python3 -m pip install -r requirements.txt python3 main.py # http://localhost:8000 # 交互式 API 文档:http://localhost:8000/docs ``` --- ## 前端启动 ```bash cd frontend npm install npm run dev # http://localhost:5174(已把 /api 代理到 8000) # 生产构建:npm run build → 产物在 frontend/dist ``` 打开 http://localhost:5174 → 注册账号 → 新建项目 → 新建接口调试 → 配置断言/场景 → 用 AI 造数据/生成用例。 --- ## AI 说明 - AI 复用XXX大模型(OpenAI 兼容协议)。`.env` 配了 `LLM_API_KEY` 且能访问内网时走真实模型。 - 无 key / 无网络时,`LLM_FALLBACK_TO_MOCK=true` 会返回结构化 mock 数据,保证功能可离线演示。 - 「AI 造数据」依赖接口的 **参数 Schema**(在接口配置里填 JSON 数组),Schema 越完整,生成数据越贴合业务。 --- ## 典型流程(登录→取资料 场景串联) 1. 建接口 A `POST {{baseUrl}}/login`,接口 B `GET {{baseUrl}}/profile`(头 `Authorization: Bearer {{token}}`)。 2. 建场景,步骤 1 选 A,提取 `token = $.data.token`;步骤 2 选 B,断言 `$.data.name` 等于预期。 3. 运行场景:步骤 1 的 token 自动传给步骤 2,报告里可看到每步断言与提取的变量。