You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.9 KiB
4.9 KiB
WebSocket第二次连接事件推送修复功能测试说明
测试文件说明
1. 完整功能测试
文件: tests/test_websocket_second_connection_fix.py
功能: 完整的WebSocket第二次连接事件推送修复功能测试
测试内容:
- ✅ 第一次连接时的事件推送
- ✅ 第二次连接时的事件推送(无新事件)
- ✅ 设备状态检查功能
- ✅ 错误处理
- ✅ 性能测试
运行方式:
cd tests
python test_websocket_second_connection_fix.py
2. 快速测试脚本
文件: tests/run_websocket_second_connection_test.py
功能: 快速运行完整功能测试的脚本
运行方式:
cd tests
python run_websocket_second_connection_test.py
3. 单元测试
文件: tests/test_websocket_device_status_check.py
功能: 专门测试 _async_check_current_device_status 方法的单元测试
测试内容:
- ✅ 设备状态检查基本功能
- ✅ 已注册设备跳过逻辑
- ✅ 空设备列表处理
- ✅ 错误处理
运行方式:
cd tests
python test_websocket_device_status_check.py
测试场景说明
场景1:第一次连接事件推送
目的: 验证第一次连接时能正常推送历史事件
测试步骤:
- 模拟一些设备事件(在连接之前)
- 检查事件缓冲队列
- 模拟WebSocket客户端连接
- 验证连接成功和事件推送
预期结果:
- 连接成功
- 设备状态检查被调用
- 历史事件被推送
场景2:第二次连接事件推送(无新事件)
目的: 验证第二次连接时能主动检查设备状态并推送数据
测试步骤:
- 模拟缓冲队列被清空(第一次推送后的状态)
- 模拟第二次WebSocket客户端连接
- 验证连接成功和主动设备状态检查
预期结果:
- 连接成功
- 设备状态检查被调用
- 为在线设备生成连接事件
场景3:设备状态检查功能
目的: 验证设备状态检查方法的正确性
测试步骤:
- 模拟不同状态的设备列表
- 调用设备状态检查方法
- 验证只处理自动发现的在线设备
预期结果:
- 只处理自动发现的在线设备
- 跳过已注册设备
- 跳过离线设备
场景4:错误处理
目的: 验证异常情况下的错误处理
测试步骤:
- 模拟设备管理器异常
- 模拟空设备列表
- 验证异常被正确处理
预期结果:
- 异常被正确处理
- 不会影响其他功能
- 有适当的日志记录
场景5:性能测试
目的: 验证大量设备情况下的性能表现
测试步骤:
- 生成100个设备数据
- 调用设备状态检查方法
- 测量执行时间
预期结果:
- 执行时间合理
- 只处理在线设备
- 内存使用稳定
测试数据说明
设备数据结构
{
"device_id": "device_001",
"status": "device", # "device" 表示在线,"offline" 表示离线
"source": "auto_discovered", # "auto_discovered" 或 "registered"
"device_info": {
"model": "Test Device 1",
"manufacturer": "Test Corp"
}
}
事件数据结构
{
"type": "device_status_update",
"device_id": "device_001",
"status": "device",
"timestamp": "2025-01-27T10:00:00",
"device_info": {
"model": "Test Device 1",
"manufacturer": "Test Corp"
}
}
Mock说明
使用的Mock对象
- WebSocket客户端管理器:模拟客户端连接
- Channel管理器:模拟Channel启动
- 设备管理器:模拟设备数据获取
- 事件处理:模拟事件生成和处理
Mock策略
- 使用
unittest.mock.patch进行方法Mock - 使用
AsyncMock处理异步方法 - 设置合理的返回值模拟真实场景
测试结果验证
成功标准
- 功能正确性:所有测试用例通过
- 性能表现:执行时间在合理范围内
- 错误处理:异常情况被正确处理
- 日志记录:有完整的日志输出
失败处理
- 测试失败:检查Mock设置和测试逻辑
- 功能异常:检查修复代码实现
- 性能问题:优化设备状态检查逻辑
运行建议
开发阶段
- 使用单元测试快速验证核心功能
- 使用完整功能测试验证整体流程
部署前
- 运行所有测试确保功能正常
- 检查测试日志确认无异常
问题排查
- 查看详细日志定位问题
- 使用Mock数据隔离问题
注意事项
- 测试环境:确保测试环境与生产环境一致
- Mock数据:使用真实的设备数据结构
- 异步处理:正确处理异步方法的测试
- 资源清理:测试完成后清理资源
- 日志级别:使用DEBUG级别查看详细日志
创建时间: 2025-01-27
创建人: AI Assistant
状态: 已完成