import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) import pytest from agents.claude import ClaudeAgent from agents.ollama import OllamaAgent def pytest_addoption(parser): parser.addoption( "--mcp-url", default="http://localhost:7860/gradio_api/mcp/sse", help="MCP server SSE endpoint", ) parser.addoption( "--agent", default="claude", help="Agent implementation to test (claude, ollama)", ) parser.addoption( "--ollama-host", default="http://localhost:11434", help="Ollama server host", ) parser.addoption( "--ollama-model", default="llama3.2", help="Ollama model name", ) @pytest.fixture(scope="session") def mcp_url(request): return request.config.getoption("--mcp-url") @pytest.fixture(scope="session") def agent(request, mcp_url): name = request.config.getoption("--agent") if name == "claude": return ClaudeAgent(mcp_url) if name == "ollama": return OllamaAgent( mcp_url, model=request.config.getoption("--ollama-model"), ollama_host=request.config.getoption("--ollama-host"), ) raise ValueError(f"Unknown agent: {name}") @pytest.fixture(scope="session") def _result_cache(): return {} @pytest.fixture def run_scenario(agent, _result_cache): def _run(scenario): if scenario.name not in _result_cache: _result_cache[scenario.name] = agent.run(scenario.user_prompt) return _result_cache[scenario.name] return _run