Added code samples for AI-Agents
This commit is contained in:
62
tests/test_chat_agent.py
Normal file
62
tests/test_chat_agent.py
Normal file
@@ -0,0 +1,62 @@
|
||||
"""Тесты для чат-агента."""
|
||||
import pytest
|
||||
from unittest.mock import AsyncMock
|
||||
from uuid import uuid4
|
||||
|
||||
from agents.chat_agent import ChatAgent
|
||||
from agents.gigachat_client import GigaChatClient
|
||||
from models.gigachat_types import GigaChatMessage, GigaChatResponse, GigaChatUsage, GigaChatChoice
|
||||
from services.cache_service import CacheService
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_gigachat():
|
||||
"""Фикстура для мокового GigaChat клиента."""
|
||||
return AsyncMock(spec=GigaChatClient)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_cache():
|
||||
"""Фикстура для мокового CacheService."""
|
||||
return AsyncMock(spec=CacheService)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def chat_agent(mock_gigachat, mock_cache):
|
||||
"""Фикстура для ChatAgent."""
|
||||
return ChatAgent(gigachat=mock_gigachat, cache=mock_cache)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_chat_basic(chat_agent, mock_gigachat, mock_cache):
|
||||
"""Тест базового чата."""
|
||||
user_id = uuid4()
|
||||
message = "Привет!"
|
||||
|
||||
mock_response = GigaChatResponse(
|
||||
id="test_id",
|
||||
object="chat.completion",
|
||||
created=1234567890,
|
||||
model="GigaChat-2-Lite",
|
||||
choices=[
|
||||
GigaChatChoice(
|
||||
message=GigaChatMessage(role="assistant", content="Привет! Как дела? 🌍"),
|
||||
index=0,
|
||||
)
|
||||
],
|
||||
usage=GigaChatUsage(prompt_tokens=50, completion_tokens=10, total_tokens=60),
|
||||
)
|
||||
|
||||
mock_gigachat.chat_with_response.return_value = mock_response
|
||||
mock_cache.get_context.return_value = []
|
||||
|
||||
response, tokens = await chat_agent.chat(
|
||||
user_id=user_id,
|
||||
message=message,
|
||||
conversation_id="test_conv",
|
||||
)
|
||||
|
||||
assert response == "Привет! Как дела? 🌍"
|
||||
assert tokens == 60
|
||||
mock_cache.add_message.assert_called()
|
||||
|
||||
Reference in New Issue
Block a user