133 lines
4.1 KiB
Python
133 lines
4.1 KiB
Python
"""
|
|
配置分类功能测试脚本
|
|
"""
|
|
from pathlib import Path
|
|
from config_category import ConfigCategoryManager, get_default_category_manager
|
|
|
|
|
|
def test_category_manager():
|
|
"""测试配置分类管理器"""
|
|
print("="*60)
|
|
print("配置分类功能测试")
|
|
print("="*60)
|
|
|
|
# 获取管理器
|
|
manager = get_default_category_manager()
|
|
print(f"\n配置根目录: {manager.config_root}")
|
|
|
|
# 扫描分类
|
|
print("\n扫描配置分类...")
|
|
categories = manager.scan_categories()
|
|
|
|
if not categories:
|
|
print(" ⚠ 未找到任何配置分类")
|
|
print(" 提示: 运行 python setup_config_categories.py 创建示例分类")
|
|
return
|
|
|
|
print(f" 找到 {len(categories)} 个分类:\n")
|
|
|
|
# 显示每个分类的详细信息
|
|
for i, cat in enumerate(categories, 1):
|
|
print(f" {i}. {cat.name}")
|
|
print(f" 路径: {cat.path}")
|
|
print(f" 配置: {cat.config_path}")
|
|
print(f" 配置存在: {'✓' if cat.config_path.exists() else '✗'}")
|
|
|
|
if cat.template_path:
|
|
print(f" 模板: {cat.template_path.name}")
|
|
print(f" 模板存在: {'✓' if cat.template_path.exists() else '✗'}")
|
|
else:
|
|
print(f" 模板: (未找到)")
|
|
print()
|
|
|
|
# 测试获取分类名称列表
|
|
print("分类名称列表:")
|
|
names = manager.get_category_names()
|
|
for name in names:
|
|
print(f" - {name}")
|
|
|
|
# 测试获取特定分类
|
|
if categories:
|
|
test_name = categories[0].name
|
|
print(f"\n测试获取分类 '{test_name}':")
|
|
cat = manager.get_category(test_name)
|
|
if cat:
|
|
print(f" ✓ 成功获取")
|
|
print(f" 配置路径: {cat.config_path}")
|
|
else:
|
|
print(f" ✗ 获取失败")
|
|
|
|
print("\n" + "="*60)
|
|
print("测试完成")
|
|
print("="*60)
|
|
|
|
|
|
def test_category_validation():
|
|
"""测试分类有效性"""
|
|
print("\n" + "="*60)
|
|
print("分类有效性检查")
|
|
print("="*60)
|
|
|
|
manager = get_default_category_manager()
|
|
categories = manager.scan_categories()
|
|
|
|
if not categories:
|
|
print(" 无分类可检查")
|
|
return
|
|
|
|
all_valid = True
|
|
|
|
for cat in categories:
|
|
print(f"\n检查分类: {cat.name}")
|
|
|
|
# 检查配置文件
|
|
if not cat.config_path.exists():
|
|
print(f" ✗ 配置文件不存在: {cat.config_path}")
|
|
all_valid = False
|
|
else:
|
|
print(f" ✓ 配置文件存在")
|
|
|
|
# 尝试读取配置
|
|
try:
|
|
import json
|
|
with cat.config_path.open('r', encoding='utf-8') as f:
|
|
config_data = json.load(f)
|
|
print(f" ✓ 配置文件格式正确")
|
|
|
|
# 检查关键字段
|
|
if 'influx' in config_data:
|
|
print(f" ✓ 包含 influx 配置")
|
|
if 'placeholders' in config_data:
|
|
print(f" ✓ 包含 placeholders 配置")
|
|
if 'devices' in config_data:
|
|
print(f" ✓ 包含 devices 配置")
|
|
|
|
except json.JSONDecodeError as e:
|
|
print(f" ✗ 配置文件JSON格式错误: {e}")
|
|
all_valid = False
|
|
except Exception as e:
|
|
print(f" ✗ 读取配置文件失败: {e}")
|
|
all_valid = False
|
|
|
|
# 检查模板文件
|
|
if cat.template_path:
|
|
if not cat.template_path.exists():
|
|
print(f" ✗ 模板文件不存在: {cat.template_path}")
|
|
all_valid = False
|
|
else:
|
|
print(f" ✓ 模板文件存在: {cat.template_path.name}")
|
|
else:
|
|
print(f" ⚠ 未配置模板文件")
|
|
|
|
print("\n" + "="*60)
|
|
if all_valid:
|
|
print("✓ 所有分类配置有效")
|
|
else:
|
|
print("✗ 部分分类配置存在问题")
|
|
print("="*60)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_category_manager()
|
|
test_category_validation()
|