87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
import pytest
|
|
from unittest.mock import MagicMock
|
|
|
|
import agentops
|
|
|
|
import openai
|
|
import anthropic
|
|
from agentops.client import Client
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_api_key():
|
|
"""Fixture to provide a mock API key."""
|
|
return "test-api-key-" + "x" * 32
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_auth_response():
|
|
"""Fixture to provide a mock authentication response."""
|
|
return MagicMock(status_code=200, json=lambda: {"access_token": "mock_token"})
|
|
|
|
|
|
@pytest.fixture
|
|
def agentops_client(mock_api_key, monkeypatch):
|
|
"""Fixture to provide an initialized AgentOps client."""
|
|
# Create a mock auth response
|
|
mock_auth = MagicMock()
|
|
mock_auth.authenticate = lambda x: True
|
|
mock_auth.is_authenticated = True
|
|
|
|
# Create the client
|
|
client = Client()
|
|
|
|
# Mock the auth module
|
|
monkeypatch.setattr(client, "api", MagicMock(auth=mock_auth))
|
|
|
|
# Initialize with mock key
|
|
client.init(api_key=mock_api_key)
|
|
return client
|
|
|
|
|
|
@pytest.fixture
|
|
def agentops_session(agentops_client):
|
|
"""Fixture to manage AgentOps session."""
|
|
agentops.start_session()
|
|
yield
|
|
agentops.end_all_sessions()
|
|
|
|
|
|
@pytest.fixture
|
|
def openai_client():
|
|
"""Fixture to provide OpenAI client with mock API key."""
|
|
client = openai.OpenAI(api_key="test-openai-key")
|
|
# Mock the completions API
|
|
client.chat.completions.create = MagicMock()
|
|
return client
|
|
|
|
|
|
@pytest.fixture
|
|
def anthropic_client():
|
|
"""Fixture to provide Anthropic client with mock API key."""
|
|
client = anthropic.Anthropic(api_key="test-anthropic-key")
|
|
# Mock the messages API
|
|
client.messages.create = MagicMock()
|
|
return client
|
|
|
|
|
|
@pytest.fixture
|
|
def test_messages():
|
|
"""Fixture to provide test messages."""
|
|
return [{"role": "user", "content": "Write a short greeting."}]
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_response():
|
|
"""Fixture to provide a mock response for testing."""
|
|
return MagicMock(choices=[MagicMock(message=MagicMock(content="Hello! This is a test response."))])
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_stream_response():
|
|
"""Fixture to provide a mock streaming response."""
|
|
return [
|
|
MagicMock(choices=[MagicMock(delta=MagicMock(content="Hello"))]),
|
|
MagicMock(choices=[MagicMock(delta=MagicMock(content=" World!"))]),
|
|
]
|