import pytest from unittest.mock import MagicMock, patch from pretor.adapter.model_adapter.agent_factory import AgentFactory from pretor.utils.error import ModelNotExistError def test_create_agent_success_real(): mock_provider = MagicMock() mock_provider.provider_type = "openai" mock_provider.provider_models = ["gpt-4"] mock_provider.provider_apikey = "key" mock_provider.provider_url = "url" with patch("pretor.adapter.model_adapter.agent_factory.Agent") as mock_agent_cls: with patch("pretor.adapter.model_adapter.agent_factory.OpenAIChatModel") as mock_model_cls: with patch("pretor.adapter.model_adapter.agent_factory.OpenAIProvider") as mock_provider_cls: factory = AgentFactory() agent = factory.create_agent( provider=mock_provider, model_id="gpt-4", output_type=str, system_prompt="You are an AI", deps_type=dict, agent_name="myagent" ) mock_provider_cls.assert_called_once_with(api_key="key", base_url="url") mock_model_cls.assert_called_once_with("gpt-4", provider=mock_provider_cls.return_value) mock_agent_cls.assert_called_once_with( model=mock_model_cls.return_value, name="myagent", system_prompt="You are an AI", output_type=str, deps_type=dict ) assert agent == mock_agent_cls.return_value def test_create_agent_model_not_exist(): factory = AgentFactory() mock_provider = MagicMock() mock_provider.provider_models = ["gpt-3"] with pytest.raises(ModelNotExistError): factory.create_agent(mock_provider, "gpt-4", str, "prompt", dict, "agent") def test_create_agent_invalid_provider_type(): factory = AgentFactory() mock_provider = MagicMock() mock_provider.provider_type = "unknown" mock_provider.provider_models = ["gpt-4"] with pytest.raises(ValueError, match="不支持的协议类型: unknown"): factory.create_agent(mock_provider, "gpt-4", str, "prompt", dict, "agent")