mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 15:48:29 +00:00
69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
from pydantic import BaseModel, Field
|
|
|
|
from crewai import Agent, Crew, Task
|
|
from crewai.utilities.converter import Converter
|
|
|
|
|
|
class ResponseFormat(BaseModel):
|
|
string: str = Field(description='string needs to be maintained')
|
|
|
|
def test_pydantic_model_conversion():
|
|
"""Test that pydantic model conversion works without causing import errors."""
|
|
|
|
# Test data
|
|
test_string = '{"string": "test value"}'
|
|
|
|
# Create a pydantic model directly
|
|
result = ResponseFormat.model_validate_json(test_string)
|
|
|
|
# Verify the conversion worked
|
|
assert result is not None
|
|
assert hasattr(result, "string")
|
|
assert isinstance(result.string, str)
|
|
assert result.string == "test value"
|
|
|
|
@patch('crewai.crew.Crew.kickoff')
|
|
def test_output_pydantic_with_mocked_crew(mock_kickoff):
|
|
"""Test that output_pydantic works properly without causing import errors."""
|
|
|
|
# Mock the crew kickoff to return a valid response
|
|
mock_result = ResponseFormat(string="mocked result")
|
|
mock_kickoff.return_value = mock_result
|
|
|
|
# Create a simple agent
|
|
agent = Agent(
|
|
role="Test Agent",
|
|
goal="Test pydantic model output",
|
|
backstory="Testing pydantic output functionality",
|
|
verbose=True
|
|
)
|
|
|
|
# Create a task with output_pydantic
|
|
task = Task(
|
|
description="Return a simple string",
|
|
expected_output="A simple string",
|
|
agent=agent,
|
|
output_pydantic=ResponseFormat
|
|
)
|
|
|
|
# Create a crew with the agent and task
|
|
crew = Crew(
|
|
agents=[agent],
|
|
tasks=[task],
|
|
verbose=True
|
|
)
|
|
|
|
# Execute the crew (this will use our mock)
|
|
result = crew.kickoff()
|
|
|
|
# Verify we got a result
|
|
assert result is not None
|
|
|
|
# Verify the result has a string attribute (as defined in ResponseFormat)
|
|
assert hasattr(result, "string")
|
|
assert isinstance(result.string, str)
|
|
assert result.string == "mocked result"
|