PCM_Report/test_config_category.py

133 lines
4.1 KiB
Python
Raw Permalink Normal View History

2025-12-19 10:18:51 +08:00
"""
配置分类功能测试脚本
"""
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()