Pytest 实时测试报告与监控系统
🎯 项目概述
Pytest 实时测试报告与监控系统是一个基于 Flask + SocketIO 构建的高性能测试报告平台,提供实时的测试进度监控、详细的测试报告生成和跨环境配置管理功能。
设计理念

✨ 核心特性
1. 实时进度监控
-
实时显示测试执行进度
-
动态更新通过/失败统计
-
实时日志流式输出
2. 多环境配置支持
-
基于 YAML 的配置管理
-
动态环境切换 (
--env参数) -
自动环境检测与回退
3. 详细的测试报告
-
HTML 格式测试报告
-
测试用例详细日志
-
执行时间统计
-
失败原因分析
4. 高性能架构
-
异步事件处理
-
多线程/进程支持
-
资源优化管理
🏗️ 系统架构
整体架构图

核心类关系图

数据流图

🔧 快速开始
环境要求






安装依赖
pip install -r requirements.txt
依赖架构图

基础使用
# 启动实时监控服务器
python run_server.py
# 运行测试并生成报告
pytest --live-report --env=dev
# 保持服务器运行
pytest --live-report --keep-server --env=qa
项目结构
project/
├── utils/
│ ├── custom_reporter.py # 核心报告生成器
│ ├── report_server.py # Web服务器
│ ├── get_server_ip.py # 获取服务器当前IP V4地址
│ └── config_loader.py # 配置加载器
├── templates/
│ ├── progress.html # 实时监控页面
│ └── template.html # 报告模板
├── config/
│ └── environment.yaml # 环境配置文件
├── reports/
│ ├── automation.log # 日志文件
│ ├── json # Allure报告原始数据
│ ├── final_state.json # 用例执行结束后的最终上报UI数据
│ └── final_report.html # 生成的报告
├── conftest.py # Pytest配置
└── run_server.py # 服务器启动脚本
📊 功能详解
1. 实时监控系统
监控界面组件

2. 配置管理系统
环境配置加载流程

3. 测试报告生成
报告生成流程

🎯 高级配置
环境配置文件示例
# config/environment.yaml
dev:
base_url: "http://dev.api.example.com"
api:
endpoint: "http://dev.api.example.com/v1"
timeout: 30
database:
host: "dev-db.example.com"
port: 3306
name: "app_dev"
auth:
token_url: "http://dev.api.example.com/auth"
client_id: "dev_client"
qa:
base_url: "http://qa.api.example.com"
api:
endpoint: "http://qa.api.example.com/v1"
timeout: 30
database:
host: "qa-db.example.com"
port: 3306
name: "app_qa"
prod:
base_url: "https://api.example.com"
api:
endpoint: "https://api.example.com/v1"
timeout: 60
database:
host: "prod-db.example.com"
port: 3306
name: "app_prod"
自定义报告模板
系统支持自定义 HTML 报告模板,主要模板变量:
<!-- 在 template.html 中 -->
<div class="environment-info">
<h3>测试环境信息</h3>
<table>
<tr>
<td>测试环境</td>
<td>{{ base_config.current_env }}</td>
</tr>
<tr>
<td>BaseURL</td>
<td>{{ base_config.base_url }}</td>
</tr>
<tr>
<td>测试账号</td>
<td>{{ base_config.account }}</td>
</tr>
<tr>
<td>执行人员</td>
<td>{{ base_config.tester }}</td>
</tr>
</table>
</div>
🔍 技术深度
1. 事件驱动架构
事件处理机制

2. 并发处理模型
系统采用多线程 + 异步IO的混合并发模型:
# 并发架构示例
class HybridConcurrency:
def __init__(self):
# 主线程:Flask + SocketIO
self.main_thread = threading.Thread(target=self.start_server)
# 工作线程:进度广播
self.broadcast_thread = threading.Thread(target=self.broadcast_worker)
# 异步任务:日志推送
self.async_tasks = []
def start_server(self):
# 使用 eventlet 实现异步IO
eventlet.monkey_patch()
self.socketio.run(self.app, async_mode='eventlet')
3. 内存管理优化

🚀 性能优化
1. WebSocket 连接管理

2. 数据序列化优化
系统采用高效的数据序列化策略:
class OptimizedSerializer:
def serialize_progress(self, progress_data):
"""优化进度数据序列化"""
return {
't': progress_data.get('target', ''),
'c': progress_data.get('completed', 0),
'tt': progress_data.get('total', 0),
'p': progress_data.get('percent', 0)
}
def serialize_log(self, log_entry):
"""优化日志序列化"""
return f"{log_entry.timestamp}|{log_entry.level}|{log_entry.message}"
Pytest 实时测试报告与监控系统 - 让测试监控变得简单而强大! 🚀