mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2025-10-04 17:36:23 +00:00
🔧 重构配置管理,添加配置文件支持,更新日志系统,优化守护进程,完善测试用例
This commit is contained in:
@@ -1,9 +1,19 @@
|
||||
import tempfile
|
||||
|
||||
from liteyukibot import config
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class ConfigModel(BaseModel):
|
||||
name: str
|
||||
version: int
|
||||
server_host: str = Field(alias="server.host")
|
||||
server_port: int = Field(alias="server.port")
|
||||
|
||||
|
||||
|
||||
def test_load_from_yaml():
|
||||
# 创建一个临时 YAML 文件内容
|
||||
"""测试从yaml文件路径加载配置项"""
|
||||
yaml_content = """
|
||||
name: LiteyukiBot
|
||||
version: 7.0.0
|
||||
@@ -18,6 +28,7 @@ def test_load_from_yaml():
|
||||
|
||||
|
||||
def test_load_from_json():
|
||||
"""测试从json文件路径加载配置"""
|
||||
json_content = '{"name": "LiteyukiBot", "version": "7.0.0"}'
|
||||
with tempfile.NamedTemporaryFile("w", delete=False, suffix=".json") as temp_file:
|
||||
temp_file.write(json_content)
|
||||
@@ -29,6 +40,7 @@ def test_load_from_json():
|
||||
|
||||
|
||||
def test_load_from_toml():
|
||||
"""测试从toml文件路径加载配置"""
|
||||
toml_content = """
|
||||
[info]
|
||||
name = "LiteyukiBot"
|
||||
@@ -44,6 +56,7 @@ def test_load_from_toml():
|
||||
|
||||
|
||||
def test_flatten_dict():
|
||||
"""测试扁平化字典"""
|
||||
nested_dict = {
|
||||
"name": "LiteyukiBot",
|
||||
"version": {
|
||||
@@ -66,4 +79,75 @@ def test_flatten_dict():
|
||||
assert flat_dict["version.patch"] == 0
|
||||
assert flat_dict["server.db.host"] == "localhost"
|
||||
assert flat_dict["server.db.port"] == 8080
|
||||
assert flat_dict["server.tags"] == ["tag1", "tag2"]
|
||||
assert flat_dict["server.tags"] == ["tag1", "tag2"]
|
||||
|
||||
def test_merge_to_config():
|
||||
"""测试合并配置"""
|
||||
old_config = {
|
||||
"name": "LiteyukiBot",
|
||||
"version": 7,
|
||||
"server": {
|
||||
"host": "localhost",
|
||||
"port": 8080
|
||||
}
|
||||
}
|
||||
config.merge_to_config(old_config)
|
||||
assert config.config["name"] == "LiteyukiBot"
|
||||
new_config = {
|
||||
"version": 8,
|
||||
"server": {
|
||||
"port": 9090
|
||||
},
|
||||
"new_key": "new_value"
|
||||
}
|
||||
|
||||
config.merge_to_config(new_config)
|
||||
|
||||
# config
|
||||
assert config.config["name"] == "LiteyukiBot"
|
||||
assert config.config["version"] == 8
|
||||
assert config.config["server"]["host"] == "localhost"
|
||||
assert config.config["server"]["port"] == 9090
|
||||
assert config.config["new_key"] == "new_value"
|
||||
# test flatten_config
|
||||
assert config.flat_config["name"] == "LiteyukiBot"
|
||||
assert config.flat_config["version"] == 8
|
||||
assert config.flat_config["server.host"] == "localhost"
|
||||
assert config.flat_config["server.port"] == 9090
|
||||
assert config.flat_config["new_key"] == "new_value"
|
||||
|
||||
def test_get_config():
|
||||
"""测试获取配置项"""
|
||||
config_data = {
|
||||
"name": "LiteyukiBot",
|
||||
"version": 7,
|
||||
"server": {
|
||||
"host": "localhost",
|
||||
"port": 8080
|
||||
}
|
||||
}
|
||||
config.merge_to_config(config_data)
|
||||
assert config.get("name") == "LiteyukiBot"
|
||||
assert config.get("version") == 7
|
||||
assert config.get("server.host") == "localhost"
|
||||
assert config.get("server.port") == 8080
|
||||
assert config.get("non_existent_key", default="default_value") == "default_value"
|
||||
assert config.get("non_existent_key", default=42) == 42
|
||||
|
||||
|
||||
def test_bind():
|
||||
"""测试配置项绑定到模型"""
|
||||
config_data = {
|
||||
"name": "LiteyukiBot",
|
||||
"version": 7,
|
||||
"server": {
|
||||
"host": "localhost",
|
||||
"port": 8080
|
||||
}
|
||||
}
|
||||
config.merge_to_config(config_data)
|
||||
bound_model = config.bind(ConfigModel)
|
||||
assert bound_model.name == "LiteyukiBot"
|
||||
assert bound_model.version == 7
|
||||
assert bound_model.server_host == "localhost"
|
||||
assert bound_model.server_port == 8080
|
12
tests/test_log.py
Normal file
12
tests/test_log.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from liteyukibot import log, logger
|
||||
|
||||
|
||||
def test_set_level():
|
||||
logger.info("Testing logger level")
|
||||
logger.debug("Debug message")
|
||||
log.set_level("DEBUG")
|
||||
logger.debug("Debug message after level change")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_set_level()
|
||||
print("测试完成,你应该只会看到一次debug信息")
|
Reference in New Issue
Block a user