Files
deepagents----/tests/test_coordinator.py

196 lines
5.1 KiB
Python
Raw Permalink Normal View History

2025-11-02 18:06:38 +08:00
"""
ResearchCoordinator测试
测试主Agent的完整执行流程
"""
import sys
import os
# 添加src目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from src.agents.coordinator import create_research_coordinator, run_research
from src.config import Config
def test_coordinator_creation():
"""测试ResearchCoordinator创建"""
print("=" * 60)
print("测试1: ResearchCoordinator创建")
print("=" * 60)
try:
# 测试默认参数
agent = create_research_coordinator(
question="什么是Python asyncio?",
depth="quick"
)
print("✓ ResearchCoordinator创建成功")
print(f" Agent类型: {type(agent)}")
return True
except Exception as e:
print(f"✗ ResearchCoordinator创建失败: {e}")
import traceback
traceback.print_exc()
return False
def test_config_validation():
"""测试配置验证"""
print("\n" + "=" * 60)
print("测试2: 配置验证")
print("=" * 60)
# 测试无效的深度模式
try:
agent = create_research_coordinator(
question="测试问题",
depth="invalid_depth"
)
print("✗ 应该抛出ValueError但没有")
return False
except ValueError as e:
print(f"✓ 正确捕获无效深度模式: {e}")
# 测试无效的min_tier
try:
agent = create_research_coordinator(
question="测试问题",
min_tier=5
)
print("✗ 应该抛出ValueError但没有")
return False
except ValueError as e:
print(f"✓ 正确捕获无效min_tier: {e}")
# 测试无效的格式
try:
agent = create_research_coordinator(
question="测试问题",
format="invalid_format"
)
print("✗ 应该抛出ValueError但没有")
return False
except ValueError as e:
print(f"✓ 正确捕获无效格式: {e}")
return True
def test_simple_research_dry_run():
"""测试简单研究流程dry run不执行真实搜索"""
print("\n" + "=" * 60)
print("测试3: 简单研究流程(模拟)")
print("=" * 60)
print("\n注意: 这个测试需要API密钥才能执行真实的Agent调用")
print("如果API密钥未配置将跳过此测试\n")
# 检查API密钥
try:
Config.validate()
except ValueError as e:
print(f"⚠️ 跳过测试:{e}")
return True # 不算失败
try:
# 创建Agent但不执行
agent = create_research_coordinator(
question="Python装饰器的作用",
depth="quick",
format="technical"
)
print("✓ Agent创建成功准备就绪")
print(" 如需运行完整测试请确保API密钥已配置")
print(" 然后运行python -m tests.test_integration")
return True
except Exception as e:
print(f"✗ 测试失败: {e}")
import traceback
traceback.print_exc()
return False
def test_depth_configs():
"""测试三种深度模式的配置"""
print("\n" + "=" * 60)
print("测试4: 深度模式配置")
print("=" * 60)
depth_modes = ["quick", "standard", "deep"]
for depth in depth_modes:
try:
agent = create_research_coordinator(
question="测试问题",
depth=depth
)
depth_config = Config.get_depth_config(depth)
print(f"\n{depth}模式配置正确:")
print(f" - 最大迭代: {depth_config['max_iterations']}")
print(f" - 置信度阈值: {depth_config['confidence_threshold']}")
print(f" - 目标来源数: {depth_config['target_sources']}")
print(f" - 并行搜索数: {depth_config['parallel_searches']}")
except Exception as e:
print(f"{depth}模式配置失败: {e}")
return False
return True
def main():
"""运行所有测试"""
print("\n")
print("=" * 60)
print("ResearchCoordinator测试套件")
print("=" * 60)
print("\n")
results = []
# 测试1: 创建
results.append(("创建测试", test_coordinator_creation()))
# 测试2: 配置验证
results.append(("配置验证", test_config_validation()))
# 测试3: 简单研究流程
results.append(("简单研究流程", test_simple_research_dry_run()))
# 测试4: 深度模式配置
results.append(("深度模式配置", test_depth_configs()))
# 总结
print("\n" + "=" * 60)
print("测试总结")
print("=" * 60)
for test_name, passed in results:
status = "✓ 通过" if passed else "✗ 失败"
print(f"{test_name}: {status}")
all_passed = all(result[1] for result in results)
print("\n" + "=" * 60)
if all_passed:
print("✓ 所有测试通过ResearchCoordinator实现正确。")
else:
print("✗ 部分测试失败,请检查实现。")
print("=" * 60 + "\n")
return all_passed
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)