Files
PlantAI-dev/tests/integration/test_agent_flow.py
T
2026-08-03 18:42:47 +08:00

119 lines
3.8 KiB
Python
Executable File

"""
Agent协作流程集成测试
"""
import pytest
from gfa_core.mas.agents import (
RouterAgent, PlanningAgent, ExecutionAgent,
DiagnosisAgent, KnowledgeAgent
)
from gfa_core.mas.agents.base import AgentState, AgentMessage
@pytest.mark.integration
class TestAgentFlow:
"""测试Agent协作流程"""
@pytest.fixture
def llm_manager(self, mock_llm_manager):
"""LLM管理器"""
return mock_llm_manager
@pytest.fixture
def agents(self, llm_manager):
"""创建所有Agent"""
return {
'router': RouterAgent(llm_manager),
'planning': PlanningAgent(llm_manager),
'execution': ExecutionAgent(llm_manager, None),
'diagnosis': DiagnosisAgent(llm_manager),
'knowledge': KnowledgeAgent(llm_manager),
}
@pytest.mark.asyncio
async def test_full_analysis_flow(self, agents):
"""测试完整分析流程"""
# 1. Router识别意图
router_state = AgentState(session_id="test_flow_001")
router_msg = AgentMessage(
sender="user",
receiver="router",
message_type="request",
payload={"query": "帮我分析拟南芥SPL基因家族"}
)
router_result = await agents['router'].execute(router_state, router_msg)
assert router_result.mode.value == "analysis"
# 2. Planning生成计划
planning_state = AgentState(
session_id="test_flow_001",
results={"intent": {"family": "SPL", "species": "Arabidopsis"}}
)
planning_msg = AgentMessage(
sender="router",
receiver="planning",
message_type="request",
payload={"task": "分析SPL基因家族"}
)
planning_result = await agents['planning'].execute(planning_state, planning_msg)
assert "plan" in planning_result.results or len(planning_result.messages) > 0
@pytest.mark.asyncio
async def test_error_diagnosis_flow(self, agents):
"""测试错误诊断流程"""
# 模拟执行失败后的诊断
diagnosis_state = AgentState(
session_id="test_error_001",
results={
"error": {
"stage": "gene-identify",
"message": "HMMER not found"
}
}
)
diagnosis_msg = AgentMessage(
sender="execution",
receiver="diagnosis",
message_type="error",
payload={"error": "HMMER not found"}
)
diagnosis_result = await agents['diagnosis'].execute(diagnosis_state, diagnosis_msg)
assert len(diagnosis_result.messages) > 0
@pytest.mark.asyncio
async def test_knowledge_query_flow(self, agents):
"""测试知识查询流程"""
knowledge_state = AgentState(session_id="test_knowledge_001")
knowledge_msg = AgentMessage(
sender="user",
receiver="knowledge",
message_type="request",
payload={"query": "SPL基因家族有什么功能?"}
)
knowledge_result = await agents['knowledge'].execute(knowledge_state, knowledge_msg)
assert len(knowledge_result.messages) > 0
@pytest.mark.integration
class TestMemoryIntegration:
"""测试记忆系统集成"""
def test_memory_manager_import(self):
"""测试MemoryManager可导入"""
from gfa_core.mas.memory import MemoryManager
assert MemoryManager is not None
def test_memory_manager_creation(self):
"""测试MemoryManager可创建"""
from gfa_core.mas.memory import MemoryManager
mm = MemoryManager()
assert mm is not None
assert hasattr(mm, 'session')
assert hasattr(mm, 'case')
assert hasattr(mm, 'knowledge')