diff --git a/lib/crewai/tests/agents/test_native_tool_calling.py b/lib/crewai/tests/agents/test_native_tool_calling.py index 13c5dc5e1..1314c9680 100644 --- a/lib/crewai/tests/agents/test_native_tool_calling.py +++ b/lib/crewai/tests/agents/test_native_tool_calling.py @@ -1142,18 +1142,21 @@ class TestNativeToolCallingJsonParseError: def _make_executor(self, tools: list[BaseTool]) -> "CrewAgentExecutor": """Create a minimal CrewAgentExecutor with mocked dependencies.""" + from crewai.agents.agent_builder.base_agent import BaseAgent from crewai.agents.crew_agent_executor import CrewAgentExecutor + from crewai.crew import Crew + from crewai.task import Task from crewai.tools.base_tool import to_langchain structured_tools = to_langchain(tools) - mock_agent = Mock() + mock_agent = Mock(spec=BaseAgent) mock_agent.key = "test_agent" mock_agent.role = "tester" mock_agent.verbose = False mock_agent.fingerprint = None mock_agent.tools_results = [] - mock_task = Mock() + mock_task = Mock(spec=Task) mock_task.name = "test" mock_task.description = "test" mock_task.id = "test-id" @@ -1161,7 +1164,7 @@ class TestNativeToolCallingJsonParseError: return CrewAgentExecutor( agent=mock_agent, task=mock_task, - crew=Mock(), + crew=Mock(spec=Crew), tools=structured_tools, original_tools=tools, ) diff --git a/lib/crewai/tests/memory/test_memory_root_scope.py b/lib/crewai/tests/memory/test_memory_root_scope.py index ec81fa524..c213832c2 100644 --- a/lib/crewai/tests/memory/test_memory_root_scope.py +++ b/lib/crewai/tests/memory/test_memory_root_scope.py @@ -523,10 +523,12 @@ class TestAgentScopeExtension: def test_agent_save_extends_crew_root_scope(self) -> None: """Agent._save_to_memory extends crew's root_scope with agent info.""" + from crewai.agents.agent_builder.base_agent import BaseAgent from crewai.agents.agent_builder.base_agent_executor import ( BaseAgentExecutor, ) from crewai.agents.parser import AgentFinish + from crewai.task import Task from crewai.utilities.printer import Printer mock_memory = MagicMock() @@ -534,12 +536,12 @@ class TestAgentScopeExtension: mock_memory.root_scope = "/crew/research-crew" mock_memory.extract_memories.return_value = ["Fact A"] - mock_agent = MagicMock() + mock_agent = MagicMock(spec=BaseAgent) mock_agent.memory = mock_memory mock_agent._logger = MagicMock() mock_agent.role = "Researcher" - mock_task = MagicMock() + mock_task = MagicMock(spec=Task) mock_task.description = "Research task" mock_task.expected_output = "Report" @@ -557,10 +559,12 @@ class TestAgentScopeExtension: def test_agent_save_sanitizes_role(self) -> None: """Agent role with special chars is sanitized for scope path.""" + from crewai.agents.agent_builder.base_agent import BaseAgent from crewai.agents.agent_builder.base_agent_executor import ( BaseAgentExecutor, ) from crewai.agents.parser import AgentFinish + from crewai.task import Task from crewai.utilities.printer import Printer mock_memory = MagicMock() @@ -568,12 +572,12 @@ class TestAgentScopeExtension: mock_memory.root_scope = "/crew/test" mock_memory.extract_memories.return_value = ["Fact"] - mock_agent = MagicMock() + mock_agent = MagicMock(spec=BaseAgent) mock_agent.memory = mock_memory mock_agent._logger = MagicMock() mock_agent.role = "Senior Research Analyst #1" - mock_task = MagicMock() + mock_task = MagicMock(spec=Task) mock_task.description = "Task" mock_task.expected_output = "Output" diff --git a/lib/crewai/tests/memory/test_unified_memory.py b/lib/crewai/tests/memory/test_unified_memory.py index e6b48333a..aeed6fa72 100644 --- a/lib/crewai/tests/memory/test_unified_memory.py +++ b/lib/crewai/tests/memory/test_unified_memory.py @@ -315,19 +315,21 @@ def test_memory_extract_memories_empty_content_returns_empty_list(tmp_path: Path def test_executor_save_to_memory_calls_extract_then_remember_per_item() -> None: """_save_to_memory calls memory.extract_memories(raw) then memory.remember(m) for each.""" + from crewai.agents.agent_builder.base_agent import BaseAgent from crewai.agents.agent_builder.base_agent_executor import BaseAgentExecutor from crewai.agents.parser import AgentFinish + from crewai.task import Task mock_memory = MagicMock() mock_memory.read_only = False mock_memory.extract_memories.return_value = ["Fact A.", "Fact B."] - mock_agent = MagicMock() + mock_agent = MagicMock(spec=BaseAgent) mock_agent.memory = mock_memory mock_agent._logger = MagicMock() mock_agent.role = "Researcher" - mock_task = MagicMock() + mock_task = MagicMock(spec=Task) mock_task.description = "Do research" mock_task.expected_output = "A report" @@ -349,16 +351,20 @@ def test_executor_save_to_memory_calls_extract_then_remember_per_item() -> None: def test_executor_save_to_memory_skips_delegation_output() -> None: """_save_to_memory does nothing when output contains delegate action.""" + from crewai.agents.agent_builder.base_agent import BaseAgent from crewai.agents.agent_builder.base_agent_executor import BaseAgentExecutor from crewai.agents.parser import AgentFinish + from crewai.task import Task from crewai.utilities.string_utils import sanitize_tool_name mock_memory = MagicMock() mock_memory.read_only = False - mock_agent = MagicMock() + mock_agent = MagicMock(spec=BaseAgent) mock_agent.memory = mock_memory mock_agent._logger = MagicMock() - mock_task = MagicMock(description="Task", expected_output="Out") + mock_task = MagicMock(spec=Task) + mock_task.description = "Task" + mock_task.expected_output = "Out" delegate_text = f"Action: {sanitize_tool_name('Delegate work to coworker')}" full_text = delegate_text + " rest"