# verify-plexus-project **Repository Path**: jeanlv/verify-plexus-project ## Basic Information - **Project Name**: verify-plexus-project - **Description**: 测试平台用来进行测试的 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-19 - **Last Updated**: 2026-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VeriPlexus(验星丛)测试管理平台 ## 项目概览 VeriPlexus 是一套面向接口测试与测试资产管理的全栈平台,覆盖用户认证、项目/需求管理、接口资产沉淀、接口用例与业务流调试、测试环境治理等核心能力。后端基于 FastAPI + Tortoise ORM 构建统一的数据与执行引擎,前端采用 Vue 3 + Element Plus 打造交互式工作台,并配套内置的接口自动化执行引擎支撑调试、回归与报告能力。@backend/main.py#19-69 ## 系统架构 - **客户端(Web)**:Vue 3 单页应用,使用 Vite 作为构建工具,Pinia 管理全局状态,Element Plus 提供 UI 组件,同时集成 Monaco Editor、JsonViewer、ECharts 等组件提升可视化与可编辑体验。@frontend/src/main.ts#1-20 - **服务端(API)**:FastAPI 应用提供 RESTful API,结合 Tortoise ORM 与 MySQL 管理数据模型,内置统一响应规范、日志与异常处理中间件,覆盖用户、项目、需求、接口、用例、环境等业务模块。@backend/main.py#19-49 - **测试执行引擎**:自研 API Test Engine,封装用例执行、环境装载、断言与结果统计能力,支持用例级与业务流级调度。@backend/engine/api_test_engine/test_runner.py#12-116 - **对象存储与外部服务**:通过 MinIO 存储调试附件,Redis/HTTPX/Faker 等依赖服务支撑测试运行。@backend/requirements.txt#1-19 @backend/.env#16-19 ## 技术栈 | 层级 | 技术 | 说明 | | --- | --- | --- | | 前端 | Vue 3、TypeScript、Vite、Pinia、Element Plus、Tailwind CSS、Monaco、Highlight.js、ECharts | 构建主控台界面、富文本与代码编辑、数据可视化。@frontend/package.json#10-51 | | 后端 | FastAPI、Tortoise ORM、Aerich、Uvicorn、PyJWT、Passlib、Loguru、HTTPX、Redis、MinIO SDK | 提供 API、数据持久化、鉴权、日志、接口调试与对象存储能力。@backend/requirements.txt#1-19 | | 数据库 | MySQL | 数据存储,配合 Tortoise ORM 管理模型。@backend/core/db/database.py#12-43 | | 工具 | Node.js ≥20、Python ≥3.10、Aerich | 本地开发与数据库迁移。 | ## 目录结构 ``` verify-plexus-project/ ├── backend/ # FastAPI 在线服务 │ ├── apps/ # 业务模块(users、projects、envs、cases 等) │ ├── core/ # 公共配置、日志、响应、异常、中间件 │ ├── engine/ # 接口测试执行引擎 │ ├── migrations/ # Aerich 数据库迁移脚本 │ ├── requirements.txt # 后端依赖清单 │ └── main.py # FastAPI 启动入口 ├── frontend/ # Vue 3 管理端 │ ├── src/api/ # Axios API 封装 │ ├── src/views/ # 页面模块(项目/接口/用例/业务流等) │ ├── src/stores/ # Pinia 状态管理 │ └── vite.config.ts # 构建配置 └── README.md # 项目说明(当前文档) ``` ## 后端服务详解 ### 应用配置与启动流程 - `core/config.py` 通过 `BaseSettings` 注入应用、数据库、日志、JWT、CORS、MinIO 等配置,可由 `.env` 定制。@backend/core/config.py#13-63 @backend/.env#1-19 - `main.py` 在应用启动时顺序完成日志初始化、挂载中间件、注册数据库、装载异常处理器及业务路由,并暴露上传目录静态资源。@backend/main.py#14-58 ### 公共能力 - **响应规范**:`core/response.py` 定义统一的 `BaseResponse` 与分页响应、错误码、消息常量,提供 `success/error/bad_request` 等便捷方法,所有 API 输出保持一致结构。@backend/core/response.py#16-260 - **异常处理**:`core/exception_handler.py` 捕获 HTTP、验证、ORM、业务自定义异常并转换为标准响应,同时记录日志,便于排错。@backend/core/exception_handler.py#18-250 - **中间件链路**:`core/middleware.py` 组合请求 ID、请求日志、CORS、安全响应头等中间件,保障安全与可观测性。@backend/core/middleware.py#176-247 - **数据库初始化**:`core/db/database.py` 注册 Tortoise ORM 连接、模型位置与时区配置,使用 Aerich 管理迁移。@backend/core/db/database.py#12-60 - **认证模块**:`core/user_auth.py` 提供密码哈希与 JWT 颁发/校验,并暴露 `is_authenticated` 依赖在路由层复用。@backend/core/user_auth.py#16-77 ### 业务模块 | 模块 | 功能摘要 | | --- | --- | | `apps/users` | 用户注册、登录、Token 校验与刷新,复用统一响应规范与密码加密。@backend/apps/users/api.py#17-119 | | `apps/projects` | 项目与模块 CRUD,生成树形模块结构,依赖认证保护接口。@backend/apps/projects/api.py#17-327 | | `apps/envs` | 管理项目接口环境(主机、全局变量、全局函数等),支撑接口调试与业务流执行。@backend/apps/envs/api.py#17-202 | | `apps/apis` | 维护接口资产、外部接口、调试元数据(详细逻辑位于 `api.py`、`schemas.py` 等文件)。@backend/apps/apis/api.py#1-400 | | `apps/cases` | 管理接口用例、断言、调试结果、业务流场景等复杂逻辑,并与执行引擎对接。@backend/apps/cases/api.py#1-400 @backend/apps/cases/crud.py#1-400 | | `apps/demands` | 需求管理(未展开阅读,但受 Tortoise 配置管理)。@backend/core/db/database.py#28-36 | ### 测试执行引擎 - `engine/api_test_engine/test_runner.py` 封装业务流执行入口,按场景装配环境变量、加载全局函数、执行用例并汇总结果,对接环境数据库配置与断言统计。@backend/engine/api_test_engine/test_runner.py#12-116 - 相关模块 (`base_case.py`, `httpx_client.py`, `test_result.py`) 负责发送请求、执行脚本、处理断言与生成报告,为前端调试结果展示提供数据来源。 ### 数据库迁移 使用 Aerich 管理 Tortoise ORM 迁移: ```bash aerich init -t core.db.database.TORTOISE_ORM aerich init-db # 模型更新后 aerich migrate --name "describe-change" aerich upgrade ``` @backend/README.md#45-65 @backend/pyproject.toml#1-4 ## 前端应用详解 ### 框架与全局装配 - `src/main.ts` 组装 Vue 应用、Pinia、VueRouter 与 Element Plus,并加载 Tailwind 及 Element 样式。@frontend/src/main.ts#1-20 - `src/api/http.ts` 统一 Axios 实例,挂载 Bearer Token、处理统一响应结构与错误弹窗,提供类型安全的 `request` 工具。@frontend/src/api/http.ts#1-91 ### 路由与权限 - `src/router/index.ts` 定义登录/注册与主业务路由,基于 `requiresAuth` 守卫校验 Token,在进入需要项目上下文的页面时强制选择项目,同时在离开时维护多标签导航。@frontend/src/router/index.ts#8-65 ### 状态管理 - `src/stores/project.ts` 在 Pinia 中持久化当前项目,辅助各页面按项目过滤数据。@frontend/src/stores/project.ts#3-30 - 其他 Store(auth、sidebar、tabs 等)配合实现登录态、布局、页签管理。 ### 关键页面与能力 | 页面 | 功能亮点 | | --- | --- | | 项目列表 `views/projects/ProjectList.vue` | 项目筛选、分页、创建/编辑/删除,以及「选择项目」全局上下文。@frontend/src/views/projects/ProjectList.vue#34-158 | | 接口列表 `views/interfaces/InterfaceList.vue` | 接口检索、模块过滤、接口详情和调试抽屉联动、分页固定等。@frontend/src/views/interfaces/InterfaceList.vue#69-265 | | 登录页 `views/Login.vue` | 处理登录流程、禁止回弹滚动、整合认证 Store。@frontend/src/views/Login.vue#22-84 | | 其他页面 | 接口用例、接口业务流、场景调试、环境管理等页面分别位于 `views/interfaces`、`views/cases`、`views/demands` 目录,重用 Drawer/Dialog 组合完成信息编辑与调试展示。 ## 核心业务流程 1. **用户认证**:用户通过登录接口获取 JWT,前端持久化 Token,后端在受保护路由中使用 `is_authenticated` 校验。@backend/apps/users/api.py#59-116 @frontend/src/api/http.ts#31-72 2. **项目选取与上下文切换**:登录后进入项目列表,选中项目写入 Pinia 与 LocalStorage,所有需要项目 ID 的接口会自动读取当前项目。@frontend/src/views/projects/ProjectList.vue#55-71 @frontend/src/stores/project.ts#16-27 3. **接口资产管理**:接口列表按项目维度展示,可新建接口、编辑、查看详情、删除,接口详情支持调试信息展示与切换到调试抽屉。@frontend/src/views/interfaces/InterfaceList.vue#172-215 4. **接口用例与调试**:用例模块组合 KeyValueTable、JsonViewer、Monaco 编辑器录入请求参数、脚本配置,可直接调用后端调试接口并展示结构化结果。@backend/apps/cases/api.py#1-400 5. **业务流(场景)执行**:场景选择多个接口用例形成步骤,调试时调用后端测试引擎,返回每步执行日志、请求/响应信息、通过率等。@backend/engine/api_test_engine/test_runner.py#52-105 6. **测试环境治理**:环境模块维护 Host、全局变量、全局请求头、数据库配置、全局函数脚本,为接口/业务流调试提供上下文。@backend/apps/envs/api.py#17-179 7. **统一响应与日志**:所有后端接口返回一致的 `code/message/data` 结构,前端拦截器自动处理异常提示;日志链路通过 Loguru 记录请求、异常,便于排查。@backend/core/response.py#89-180 @frontend/src/api/http.ts#41-72 ### 业务流程图 ```mermaid flowchart TD A[用户访问登录页] --> B{提交登录表单} B -->|认证成功| C[获取 JWT Token] C --> D[进入项目管理页] D --> E[选择或创建项目] E --> F{进入业务功能} F --> F1[接口资产管理] F --> F2[接口用例维护] F --> F3[业务流场景配置] F --> F4[环境管理] F1 --> G1[发起接口调试] F2 --> G2[调试接口用例] F3 --> G3[执行业务流] F4 --> G4[提供环境上下文] G1 & G2 & G3 --> H[调用后端 FastAPI 服务] H --> I[触发接口测试引擎] I --> J[生成执行结果] J --> K[前端结果展示与日志回溯] K --> L[用户评估&迭代配置] L --> F B -->|认证失败| B1[提示错误并允许重试] ``` ## 环境配置 `.env` 提供示例配置:应用基本信息、数据库访问、MinIO 对象存储等,部署时需替换为自身环境信息。@backend/.env#1-19 ## 快速开始 ### 前置条件 - Python ≥ 3.10 & pip - Node.js ≥ 20(与项目 engines 要求一致)@frontend/package.json#6-8 - MySQL 实例(确保 `.env` 数据库可访问) ### 启动后端 ```bash cd backend python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate pip install -r requirements.txt # 初始化数据库(首次) aerich init -t core.db.database.TORTOISE_ORM aerich init-db uvicorn main:app --reload --host 0.0.0.0 --port 8866 ``` @backend/README.md#45-65 @backend/requirements.txt#1-19 @backend/main.py#60-69 ### 启动前端 ```bash cd frontend npm install npm run dev ``` 默认使用 Vite 开发服务器,并通过 `/api/v1` 代理访问后端。@frontend/package.json#9-16 ### 生产构建 - 前端:`npm run build` 产出静态资源,通过 Nginx 等容器托管。@frontend/package.json#11-13 - 后端:使用 Uvicorn/Gunicorn + Supervisor/Systemd 部署,并在 `.env` 中关闭 `RELOAD`、设置正确的 `HOST/PORT`。 ## 日志与监控 - Loguru 将应用日志与错误日志分别落盘,可在 `.env` / `core/config.py` 中调整目录、切分策略与保留周期。@backend/core/config.py#29-39 - 中间件会在响应头添加 `X-Request-ID`、`X-Process-Time`,可用于追踪链路。@backend/core/middleware.py#213-247 ## 部署建议 - 将 `.env` 中的秘钥、数据库、MinIO 凭证改为生产值,并限制访问安全。@backend/.env#1-19 - 为 FastAPI 启用 HTTPS、限制 CORS。@backend/core/config.py#49-56 - MinIO、数据库、Redis 等外部依赖需保证网络可达与认证安全。 ## 后续规划(建议) - 引入自动化测试覆盖率统计与钩子,保障核心模块质量。 - 增加 CI/CD 流程,在提交时自动执行 Lint、类型检查与后端单元测试。 - 丰富测试引擎报告,包括趋势图、告警通知等可视化能力。 --- 如需了解更多业务细节,可进一步阅读 `backend/apps` 与 `frontend/src/views` 下的模块实现,本文已覆盖整体架构、技术栈与主要业务流。