ProfillyBot / tests /conftest.py
MinhDS's picture
Deploy ProfillyBot: Gradio ZeroGPU + CV RAG (Qwen2.5-3B)
0828c2c verified
Raw
History Blame Contribute Delete
2.17 kB
"""Pytest configuration and fixtures for all tests.
This module provides global test fixtures that are automatically applied
to all tests in the test suite.
Environment Variables:
SKIP_LLM_MOCK: Set to "true" to disable LLM mocking for integration tests
that require actual Ollama connection.
Example:
# Run tests with actual Ollama (requires Ollama to be running)
SKIP_LLM_MOCK=true pytest tests/
# Run tests with mocked LLM (default, works in CI/CD)
pytest tests/
"""
import os
from unittest.mock import MagicMock, patch
import pytest
@pytest.fixture(autouse=True)
def mock_llm_handler():
"""Mock LLM handler to avoid requiring Ollama in tests.
This fixture is automatically used for all tests unless explicitly disabled
via the SKIP_LLM_MOCK environment variable. It prevents tests from trying
to connect to Ollama, which may not be available in CI/CD environments
like GitHub Actions.
The mock provides:
- A mock LLM that returns test responses
- A mock system prompt
- All necessary methods to simulate LLM behavior
This allows tests to focus on business logic without requiring a running
Ollama instance.
"""
# Check if we should skip mocking (e.g., for integration tests)
if os.environ.get("SKIP_LLM_MOCK") == "true":
yield
return
with patch("src.rag_pipeline.get_llm_handler") as mock_get_handler:
# Create a mock LLM handler
mock_handler = MagicMock()
# Create a mock LLM that returns simple responses
mock_llm = MagicMock()
mock_llm.invoke.return_value = "This is a test response from the mocked LLM."
mock_llm.ainvoke.return_value = "This is a test response from the mocked LLM."
# Configure the mock handler to return the mock LLM
mock_handler.get_llm.return_value = mock_llm
mock_handler.get_system_prompt.return_value = (
"You are a helpful AI assistant. Answer questions based on the provided context."
)
# Make get_llm_handler return our mock
mock_get_handler.return_value = mock_handler
yield mock_handler