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:
55
test_plugin_error.py
Normal file
55
test_plugin_error.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import sys
|
||||
import os
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
# 添加项目根目录到Python路径
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
# 导入插件管理器
|
||||
from core.managers.plugin_manager import PluginManager
|
||||
|
||||
# 创建测试用例
|
||||
def test_plugin_error_handling():
|
||||
# 创建命令管理器模拟
|
||||
mock_command_manager = MagicMock()
|
||||
mock_command_manager.plugins = {}
|
||||
|
||||
# 创建插件管理器
|
||||
pm = PluginManager(mock_command_manager)
|
||||
|
||||
# 模拟导入错误
|
||||
def import_side_effect(name, *args, **kwargs):
|
||||
if name == "plugins.bad_plugin":
|
||||
raise Exception("Load error")
|
||||
mock_module = MagicMock()
|
||||
mock_module.__plugin_meta__ = {"name": "Test Plugin"}
|
||||
return mock_module
|
||||
|
||||
# 打桩
|
||||
with patch("pkgutil.iter_modules") as mock_iter, \
|
||||
patch("importlib.import_module", side_effect=import_side_effect), \
|
||||
patch("os.path.exists", return_value=True), \
|
||||
patch("core.managers.plugin_manager.logger") as mock_logger:
|
||||
|
||||
mock_iter.return_value = [(None, "bad_plugin", False)]
|
||||
|
||||
# 执行加载
|
||||
pm.load_all_plugins()
|
||||
|
||||
# 验证
|
||||
assert "plugins.bad_plugin" not in pm.loaded_plugins
|
||||
print(f"DEBUG: mock_logger.exception.called: {mock_logger.exception.called}")
|
||||
print(f"DEBUG: mock_logger.error.called: {mock_logger.error.called}")
|
||||
print(f"DEBUG: mock_logger method calls: {mock_logger.method_calls}")
|
||||
|
||||
# 检查是否调用了日志
|
||||
if mock_logger.exception.called:
|
||||
print("SUCCESS: logger.exception was called")
|
||||
elif mock_logger.error.called:
|
||||
print("SUCCESS: logger.error was called")
|
||||
else:
|
||||
print("ERROR: No logger method was called!")
|
||||
|
||||
# 运行测试
|
||||
if __name__ == "__main__":
|
||||
test_plugin_error_handling()
|
||||
Reference in New Issue
Block a user