Writing Tests

Test Structure

Tests are organized in the tests/ directory:

tests/
├── unit/
│   └── agents/
│       └── all_agents/
│           └── test_my_agent.py
└── integration/
    └── test_registry_discovery.py

Example Agent Test

import pytest
from unittest.mock import Mock
from src.all_agents.my_agent.main_agent import MyAgent
from src.service.models.base_models import AgentChatRequest

@pytest.fixture
def agent():
    return MyAgent()

def test_my_agent_initialization(agent):
    assert agent is not None
    assert agent._get_agent_name() == "my_agent"

@pytest.mark.asyncio
async def test_my_agent_chat(mock_runner, mock_session_manager, agent):
    mock_run = mock_runner({"text": "Hello, world!"})
    agent.runner = Mock()
    agent.runner.run = mock_run
    agent.session_manager = mock_session_manager
    
    request = AgentChatRequest(
        agent_name="my_agent",
        user_id="test-user",
        session_id="test-session",
        query="Hello",
        features=[]
    )
    
    response = await agent.chat(request)
    assert response.success is True
    assert response.agent_response.text == "Hello, world!"

Test Fixtures

The framework provides test fixtures in tests/conftest.py:

  • mock_runner_response: Creates mock ADK responses

  • mock_session_manager: Mocks session management

  • mock_runner: Mocks the Google ADK Runner

Running Tests

# Run all tests
pipenv run pytest tests/ -v

# Run specific test file
pipenv run pytest tests/unit/agents/all_agents/test_my_agent.py -v