""" 配置分类功能测试脚本 """ 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()