jianzhihuixiang/skills/character-profile-cn/test/test_enhancement.py

228 lines
6.8 KiB
Python

#!/usr/bin/env python3
"""
增强功能测试脚本
测试LoreBible管理、冲突检测和会话管理功能
"""
import os
import sys
import tempfile
import shutil
from pathlib import Path
# 添加scripts目录到路径
sys.path.insert(0, str(Path(__file__).parent.parent / "scripts"))
def test_lore_bible_manager():
"""测试LoreBible管理器"""
print("测试LoreBible管理器...")
from lore_bible_manager import LoreBibleManager
# 创建临时工作目录
with tempfile.TemporaryDirectory() as temp_dir:
workspace = Path(temp_dir) / "test_workspace"
workspace.mkdir()
# 创建管理器
manager = LoreBibleManager(str(workspace))
# 测试目录验证
is_valid, missing_dirs = manager.validate_directory_structure()
print(f" 目录验证: 有效={is_valid}, 缺失目录={missing_dirs}")
# 测试目录创建
success = manager.create_directory_structure()
print(f" 目录创建: {'成功' if success else '失败'}")
# 再次验证
is_valid, missing_dirs = manager.validate_directory_structure()
print(f" 创建后验证: 有效={is_valid}")
# 测试工作空间信息
info = manager.get_workspace_info()
print(f" 工作空间信息: 角色数={info['characters_count']}, 临时文件数={info['temp_files_count']}")
print(" LoreBible管理器测试完成")
def test_conflict_detector():
"""测试冲突检测器"""
print("测试冲突检测器...")
from conflict_detector import ConflictDetector, ConflictSeverity
# 创建检测器
detector = ConflictDetector()
# 测试角色数据
character_data = {
"name": "测试角色",
"age": "25",
"gender": "",
"occupation": "剑士",
"role": "主角"
}
# 测试冲突检测
conflicts = detector.detect_conflicts(character_data, [])
print(f" 冲突检测: 发现 {len(conflicts)} 个冲突")
# 测试角色验证
is_valid, validation_conflicts = detector.validate_character(character_data)
print(f" 角色验证: 有效={is_valid}, 冲突数={len(validation_conflicts)}")
# 测试报告生成
report = detector.generate_report(conflicts, "text")
print(f" 报告生成: {len(report.splitlines())}")
print(" 冲突检测器测试完成")
def test_profile_session():
"""测试会话管理"""
print("测试会话管理...")
from profile_session import ProfileSession, SessionConfig
with tempfile.TemporaryDirectory() as temp_dir:
workspace = Path(temp_dir) / "test_session"
workspace.mkdir()
# 创建配置
config = SessionConfig(
workspace=str(workspace),
character_name="测试角色",
template_type="standard",
require_confirmation=False
)
# 创建会话
session = ProfileSession(config)
print(f" 会话创建: ID={session.session_id}")
# 测试状态报告
report = session.get_status_report()
print(f" 状态报告: {report['status']}")
# 测试临时档案保存
test_content = "# 测试角色 - 角色档案\n\n测试内容"
temp_path = session.save_temp_profile(test_content)
print(f" 临时保存: {'成功' if temp_path else '失败'}")
# 测试会话列表
sessions = ProfileSession.list_sessions(str(workspace), active_only=False)
print(f" 会话列表: {len(sessions)} 个会话")
print(" 会话管理测试完成")
def test_generate_profile_enhanced():
"""测试增强的档案生成"""
print("测试增强档案生成...")
from generate_profile import CharacterProfileGenerator
with tempfile.TemporaryDirectory() as temp_dir:
workspace = Path(temp_dir) / "test_generation"
workspace.mkdir()
# 创建生成器(增强模式)
generator = CharacterProfileGenerator(
template_type="standard",
workspace=str(workspace)
)
# 角色数据
character_data = {
"name": "增强测试角色",
"age": "30",
"gender": "",
"occupation": "法师",
"role": "主角"
}
# 测试增强生成(跳过用户确认)
success, final_path, conflicts = generator.generate_enhanced_profile(
character_data,
require_confirmation=False
)
print(f" 增强生成: 成功={success}, 最终路径={final_path}, 冲突数={len(conflicts)}")
# 测试传统生成
generator2 = CharacterProfileGenerator(template_type="standard")
content = generator2.generate_markdown(character_data, output_path=None)
print(f" 传统生成: 内容长度={len(content)} 字符")
print(" 增强档案生成测试完成")
def test_subagent_orchestrator():
"""测试子代理协调器"""
print("测试子代理协调器...")
from subagent_orchestrator import SubagentOrchestrator
with tempfile.TemporaryDirectory() as temp_dir:
workspace = Path(temp_dir) / "test_orchestrator"
workspace.mkdir()
# 创建协调器
orchestrator = SubagentOrchestrator(str(workspace))
# 测试工作流运行(使用快速创建模式)
try:
result = orchestrator.run_workflow("quick_creation", {
"character_data": {
"name": "协调测试角色",
"age": "28",
"gender": "",
"occupation": "盗贼",
"role": "配角"
},
"template_type": "standard"
})
report = result["report"]
print(f" 工作流执行: {report['completed']}/{report['total_tasks']} 任务完成")
print(f" 成功率: {report['success_rate']:.1%}")
except Exception as e:
print(f" 工作流执行失败(预期内): {e}")
print(" 子代理协调器测试完成")
def main():
"""主测试函数"""
print("开始增强功能测试...")
print("=" * 60)
tests = [
test_lore_bible_manager,
test_conflict_detector,
test_profile_session,
test_generate_profile_enhanced,
test_subagent_orchestrator
]
passed = 0
total = len(tests)
for i, test_func in enumerate(tests, 1):
try:
test_func()
passed += 1
print(f"[{i}/{total}] [OK] 通过")
except Exception as e:
print(f"[{i}/{total}] [X] 失败: {e}")
print()
print("=" * 60)
print(f"测试完成: {passed}/{total} 通过 ({passed/total*100:.1f}%)")
if passed == total:
print("所有测试通过!")
return 0
else:
print("部分测试失败")
return 1
if __name__ == "__main__":
sys.exit(main())