feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
import pytest
|
||||
import logging
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch, MagicMock
|
||||
from apitest.config.config_manager import ConfigManager
|
||||
from apitest.config.logger_manager import LoggerManager
|
||||
|
||||
|
||||
class TestLoggerManager:
|
||||
"""测试LoggerManager日志管理器"""
|
||||
|
||||
@pytest.fixture
|
||||
def mock_config_manager(self):
|
||||
"""模拟配置管理器"""
|
||||
config_manager = MagicMock(spec=ConfigManager)
|
||||
config_manager.get_log_level.return_value = "INFO"
|
||||
config_manager.get_log_format.return_value = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||
config_manager.get_log_file.return_value = None
|
||||
return config_manager
|
||||
|
||||
@pytest.fixture
|
||||
def logger_manager(self, mock_config_manager):
|
||||
"""创建日志管理器实例"""
|
||||
return LoggerManager(mock_config_manager)
|
||||
|
||||
def test_logger_manager_initialization(self, mock_config_manager):
|
||||
"""测试日志管理器初始化"""
|
||||
logger_manager = LoggerManager(mock_config_manager)
|
||||
assert logger_manager.config_manager == mock_config_manager
|
||||
assert isinstance(logger_manager._loggers, dict)
|
||||
|
||||
@pytest.fixture
|
||||
def mock_config_manager_with_file(self, tmp_path):
|
||||
"""模拟带日志文件的配置管理器"""
|
||||
config_manager = MagicMock(spec=ConfigManager)
|
||||
config_manager.get_log_level.return_value = "DEBUG"
|
||||
config_manager.get_log_format.return_value = "%(name)s - %(levelname)s - %(message)s"
|
||||
config_manager.get_log_file.return_value = tmp_path / "test.log"
|
||||
return config_manager
|
||||
|
||||
def test_logger_manager_with_file(self, mock_config_manager_with_file):
|
||||
"""测试带日志文件的日志管理器初始化"""
|
||||
logger_manager = LoggerManager(mock_config_manager_with_file)
|
||||
assert logger_manager.config_manager == mock_config_manager_with_file
|
||||
|
||||
def test_get_logger(self, logger_manager):
|
||||
"""测试获取日志记录器"""
|
||||
logger = logger_manager.get_logger("test_logger")
|
||||
assert isinstance(logger, logging.Logger)
|
||||
assert logger.name == "test_logger"
|
||||
assert "test_logger" in logger_manager._loggers
|
||||
|
||||
def test_get_logger_cached(self, logger_manager):
|
||||
"""测试获取缓存的日志记录器"""
|
||||
logger1 = logger_manager.get_logger("test_logger")
|
||||
logger2 = logger_manager.get_logger("test_logger")
|
||||
assert logger1 is logger2
|
||||
|
||||
def test_set_level(self, logger_manager):
|
||||
"""测试设置日志级别"""
|
||||
logger_manager.set_level("DEBUG")
|
||||
root_logger = logging.getLogger()
|
||||
assert root_logger.level == logging.DEBUG
|
||||
|
||||
def test_add_file_handler(self, logger_manager, tmp_path):
|
||||
"""测试添加文件处理器"""
|
||||
log_file = tmp_path / "test_add_handler.log"
|
||||
|
||||
initial_handler_count = len([h for h in logging.getLogger().handlers if isinstance(h, logging.FileHandler)])
|
||||
|
||||
logger_manager.add_file_handler(log_file)
|
||||
|
||||
root_logger = logging.getLogger()
|
||||
file_handlers = [h for h in root_logger.handlers if isinstance(h, logging.FileHandler)]
|
||||
assert len(file_handlers) > initial_handler_count
|
||||
|
||||
new_handlers = file_handlers[initial_handler_count:]
|
||||
assert len(new_handlers) > 0
|
||||
assert str(log_file) in new_handlers[0].baseFilename
|
||||
|
||||
def test_add_file_handler_with_level(self, logger_manager, tmp_path):
|
||||
"""测试添加带级别的文件处理器"""
|
||||
log_file = tmp_path / "test_add_handler_level.log"
|
||||
|
||||
initial_handler_count = len([h for h in logging.getLogger().handlers if isinstance(h, logging.FileHandler)])
|
||||
|
||||
logger_manager.add_file_handler(log_file, "ERROR")
|
||||
|
||||
root_logger = logging.getLogger()
|
||||
file_handlers = [h for h in root_logger.handlers if isinstance(h, logging.FileHandler)]
|
||||
assert len(file_handlers) > initial_handler_count
|
||||
|
||||
new_handlers = file_handlers[initial_handler_count:]
|
||||
assert len(new_handlers) > 0
|
||||
assert new_handlers[0].level == logging.ERROR
|
||||
|
||||
def test_remove_all_handlers(self, logger_manager):
|
||||
"""测试移除所有处理器"""
|
||||
original_handler_count = len(logging.getLogger().handlers)
|
||||
logger_manager.remove_all_handlers()
|
||||
assert len(logging.getLogger().handlers) == 0
|
||||
|
||||
@patch('apitest.config.logger_manager.setup_logger')
|
||||
def test_setup_logger_function(self, mock_setup):
|
||||
"""测试setup_logger函数"""
|
||||
from apitest.config.logger_manager import setup_logger
|
||||
mock_config = MagicMock(spec=ConfigManager)
|
||||
setup_logger(mock_config)
|
||||
mock_setup.assert_called_once_with(mock_config)
|
||||
|
||||
|
||||
class TestSetupLoggerIntegration:
|
||||
"""测试setup_logger集成"""
|
||||
|
||||
def test_setup_logger_creates_logger_manager(self):
|
||||
"""测试setup_logger创建日志管理器"""
|
||||
config_data = {
|
||||
"logging": {
|
||||
"level": "INFO",
|
||||
"format": "%(name)s - %(levelname)s - %(message)s",
|
||||
"file": None
|
||||
}
|
||||
}
|
||||
|
||||
with patch('apitest.config.config_manager.ConfigManager') as mock_config_class:
|
||||
mock_config = MagicMock(spec=ConfigManager)
|
||||
mock_config.get_log_level.return_value = "INFO"
|
||||
mock_config.get_log_format.return_value = "%(name)s - %(levelname)s - %(message)s"
|
||||
mock_config.get_log_file.return_value = None
|
||||
mock_config_class.return_value = mock_config
|
||||
|
||||
from apitest.config.logger_manager import setup_logger
|
||||
logger_manager = setup_logger(mock_config)
|
||||
|
||||
assert isinstance(logger_manager, LoggerManager)
|
||||
assert logger_manager.config_manager == mock_config
|
||||
Reference in New Issue
Block a user