🏃 TestRunner — 自动化测试任务可视化管理平台
"浏览无需登录,动手才需验身。"
概述
TestRunner 是一个自动化测试任务的可视化管理平台,提供基于 Web 的界面来管理用户、角色、权限和测试项目。核心理念:未登录用户可以自由查看测试报告和数据,只有在执行创建、修改或删除操作时才需要登录验证。
在线地址: https://testrunner.mikigo.site/
GitHub: https://github.com/mikigo/TestRunner
解决的痛点
- 测试报告分散在各处,缺乏统一的可视化管理平台
- 传统 RBAC 系统强制登录,分享测试报告给外部人员不方便
- 需要一套可复用的后台管理基础框架(CRUD、认证、权限、审计日志)
- 测试任务执行缺乏可视化的调度和追踪能力
核心特性
匿名浏览 + 按需认证
- GET 请求:匿名用户可自由浏览所有数据(测试报告、列表、详情)
- 写操作:POST/PUT/DELETE 触发
401,提示用户登录 - 无缝体验:登录后自动获得完整操作权限,登出后回退到只读模式
三级 RBAC 权限模型
- 超级管理员始终全权限放行
- 角色可精确控制到每个 API 的方法 + 路径
- 菜单根据角色动态生成,不同角色看到不同的导航结构
种子数据
首次运行自动初始化:
两个预置角色:管理员(所有 API + 所有菜单)、普通用户(所有菜单 + 仅 GET API)。
通用 CRUD 基类
CRUDBase 抽象基类提供 get、list、create、update、remove 标准操作。新业务模型只需继承并实现控制器类,即可获得完整的 CRUD 能力,减少重复代码。
API 自动注册
ApiController.refresh_api() 自动扫描 FastAPI 所有已注册路由,同步到数据库 api 表(存储 method、path、summary、tags)。每次启动自动刷新,确保权限配置始终映射最新路由。
审计日志
HttpAuditLogMiddleware 中间件拦截所有 HTTP 请求,记录:
- 用户 ID、用户名
- 请求方法、路径、状态码、耗时(毫秒)
- 请求参数和响应体(最大 1MB)
- 模块标签和摘要
支持按用户、模块、方法、路径、状态码、时间范围查询。
部门管理(闭包表)
使用闭包表模式(Dept + DeptClosure)实现任意深度的树形组织架构,支持高效的祖先/后代查询和低成本的重新父级分配,支持软删除。
动态路由
前端从后端接口获取菜单结构,通过 buildRoutes() 动态生成 Vue Router 路由。菜单和页面可访问性完全由角色控制。
国际化
前端使用 vue-i18n 支持中文(默认)和英文,头部提供语言切换。
测试任务执行(规划中)
基于 swarm 执行引擎的自动化测试模块,计划的数据模型:Project(Git 仓库配置)→ Module(逻辑分组)→ Case(测试用例)→ Task(执行记录,关联 swarm 任务 ID 和 Allure 报告 URL)。
技术栈
项目结构
数据模型
API 端点
所有端点以 /api/v1/ 为前缀,统一响应格式 {code, msg, data}。
认证(/base)
管理 CRUD(RBAC 保护)
使用方式
后端
首次启动自动完成:数据库迁移 → 种子数据(admin / 123456)→ 默认菜单、API 注册、预置角色。
前端
生产构建
默认账号
- 超级管理员:
admin/123456 - 访客:无需登录,只读访问所有 GET 接口
设计文档
设计方案.md— 匿名访问功能的详细设计(3 个后端文件 + 3 个前端模块的改造方案)runner设计方案.md— 自动化测试平台模块规划,与 swarm 执行引擎集成的数据模型和 API 设计
许可证
MIT