feat: 添加测试覆盖率并修复相关问题

refactor(redis_manager): 移除冗余的ConnectionError处理
refactor(event_handler): 优化Bot类型注解
refactor(factory): 移除未使用的GroupCardNoticeEvent

test: 添加全面的单元测试覆盖
- 添加test_import.py测试模块导入
- 添加test_debug.py测试插件加载调试
- 添加test_plugin_error.py测试错误处理
- 添加test_config_loader.py测试配置加载
- 添加test_redis_manager.py测试Redis管理
- 添加test_bot.py测试Bot功能
- 扩展test_models.py测试消息模型
- 添加test_plugin_manager_coverage.py测试插件管理
- 添加test_executor.py测试代码执行器
- 添加test_ws.py测试WebSocket
- 添加test_api.py测试API接口
- 添加test_core_managers.py测试核心管理模块

fix(plugin_manager): 修复插件加载日志变量问题

覆盖率已到达86%(忽略插件)
This commit is contained in:
2026-01-09 23:18:58 +08:00
parent ec3a1c8eac
commit 8508fc95f5
17 changed files with 2057 additions and 112 deletions

View File

@@ -198,7 +198,7 @@ class NoticeHandler(BaseHandler):
return func
return decorator
async def handle(self, bot: Bot, event: Any):
async def handle(self, bot: "Bot", event: Any):
"""
处理通知事件
"""
@@ -231,7 +231,7 @@ class RequestHandler(BaseHandler):
return func
return decorator
async def handle(self, bot: Bot, event: Any):
async def handle(self, bot: "Bot", event: Any):
"""
处理请求事件
"""

View File

@@ -12,6 +12,9 @@ from typing import Set
from ..utils.exceptions import SyncHandlerError
from ..utils.logger import logger
# 确保logger在模块级别可见
__all__ = ['PluginManager', 'logger']
class PluginManager:
"""
@@ -49,6 +52,7 @@ class PluginManager:
for _, module_name, is_pkg in pkgutil.iter_modules([plugin_dir]):
full_module_name = f"{package_name}.{module_name}"
action = "加载" # 初始化默认值
try:
if full_module_name in self.loaded_plugins:
self.command_manager.unload_plugin(full_module_name)
@@ -70,7 +74,7 @@ class PluginManager:
logger.error(f" 插件 {module_name} 加载失败: {e} (跳过此插件)")
except Exception as e:
logger.exception(
f" {action if 'action' in locals() else '加载'}插件 {module_name} 失败: {e}"
f" 加载插件 {module_name} 失败: {e}"
)
def reload_plugin(self, full_module_name: str):

View File

@@ -39,9 +39,6 @@ class RedisManager:
logger.success("Redis 连接成功!")
else:
logger.error("Redis 连接失败: PING 命令无响应")
except redis.exceptions.ConnectionError as e:
logger.error(f"Redis 连接失败: {e}")
self._redis = None
except Exception as e:
logger.exception(f"Redis 初始化时发生未知错误: {e}")
self._redis = None