|
||
---|---|---|
.. | ||
api | ||
integration | ||
unit | ||
README.md | ||
__init__.py | ||
run_tests.py |
README.md
DeepWiki Tests
This directory contains all tests for the DeepWiki project, organized by type and scope.
Directory Structure
tests/
├── unit/ # Unit tests - test individual components in isolation
│ ├── test_google_embedder.py # Tests for Google AI embedder client
│ └── test_google_embedder_fix.py # Tests for embedding response parsing fix
├── integration/ # Integration tests - test component interactions
│ └── test_full_integration.py # Full pipeline integration test
├── api/ # API tests - test HTTP endpoints
│ └── test_api.py # API endpoint tests
└── run_tests.py # Test runner script
Running Tests
All Tests
python tests/run_tests.py
Unit Tests Only
python tests/run_tests.py --unit
Integration Tests Only
python tests/run_tests.py --integration
API Tests Only
python tests/run_tests.py --api
Individual Test Files
# Unit tests
python tests/unit/test_google_embedder.py
python tests/unit/test_google_embedder_fix.py
# Integration tests
python tests/integration/test_full_integration.py
# API tests
python tests/api/test_api.py
Test Requirements
Environment Variables
GOOGLE_API_KEY
: Required for Google AI embedder testsOPENAI_API_KEY
: Required for some integration testsDEEPWIKI_EMBEDDER_TYPE
: Set to 'google' for Google embedder tests
Dependencies
All test dependencies are included in the main project requirements:
python-dotenv
: For loading environment variablesadalflow
: Core framework for embeddingsgoogle-generativeai
: Google AI API clientrequests
: For API testing
Test Categories
Unit Tests
- Purpose: Test individual components in isolation
- Speed: Fast (< 1 second per test)
- Dependencies: Minimal external dependencies
- Examples: Testing embedder response parsing, configuration loading
Integration Tests
- Purpose: Test how components work together
- Speed: Medium (1-10 seconds per test)
- Dependencies: May require API keys and external services
- Examples: End-to-end embedding pipeline, RAG workflow
API Tests
- Purpose: Test HTTP endpoints and WebSocket connections
- Speed: Medium-slow (5-30 seconds per test)
- Dependencies: Requires running API server
- Examples: Chat completion endpoints, streaming responses
Adding New Tests
- Choose the right category: Determine if your test is unit, integration, or API
- Create the test file: Place it in the appropriate subdirectory
- Follow naming convention:
test_<component_name>.py
- Add proper imports: Use the project root path setup pattern
- Document the test: Add docstrings explaining what the test does
- Update this README: Add your test to the appropriate section
Troubleshooting
Import Errors
If you get import errors, ensure the test file includes the project root path setup:
from pathlib import Path
import sys
# Add the project root to the Python path
project_root = Path(__file__).parent.parent.parent
sys.path.insert(0, str(project_root))
API Key Issues
Make sure you have a .env
file in the project root with the required API keys:
GOOGLE_API_KEY=your_google_api_key_here
OPENAI_API_KEY=your_openai_api_key_here
DEEPWIKI_EMBEDDER_TYPE=google
Server Dependencies
For API tests, ensure the FastAPI server is running on the expected port:
cd api
python main.py