DataEngEval / test /README.md
uparekh01151's picture
Initial commit for DataEngEval
acd8e16
# NL→SQL Leaderboard Tests
This directory contains all test files for the NL→SQL Leaderboard project.
## Test Structure
```
test/
β”œβ”€β”€ __init__.py # Test package initialization
β”œβ”€β”€ conftest.py # Pytest configuration and fixtures
β”œβ”€β”€ test_config.py # Configuration loading tests
β”œβ”€β”€ test_evaluation.py # Evaluation pipeline tests
β”œβ”€β”€ test_models.py # Model testing utilities
β”œβ”€β”€ test_system.py # System integration tests
└── README.md # This file
```
## Running Tests
### Quick Test Run
```bash
python run_tests.py
```
### Using pytest directly
```bash
# Run all tests
pytest test/
# Run specific test file
pytest test/test_config.py
# Run with coverage
pytest test/ --cov=src --cov-report=html
# Run only fast tests
pytest test/ -m "not slow"
```
### Test Categories
- **Unit Tests**: Fast, isolated tests for individual components
- **Integration Tests**: Tests that verify component interactions
- **System Tests**: End-to-end tests of the complete system
## Test Configuration
Tests are configured to run in mock mode by default:
- `MOCK_MODE=true` - Uses mock SQL generation
- `HF_TOKEN=""` - Prevents real API calls
- All external dependencies are mocked
## Test Fixtures
- `mock_mode`: Ensures mock mode is enabled
- `test_data_dir`: Path to test data directory
- `config_dir`: Path to configuration directory
## Writing New Tests
1. Create test files with `test_*.py` naming
2. Use descriptive test function names starting with `test_`
3. Use fixtures from `conftest.py` when needed
4. Mark slow tests with `@pytest.mark.slow`
5. Use proper assertions and error messages
## Test Coverage
The test suite aims for comprehensive coverage:
- Configuration loading and validation
- Model registry functionality
- Evaluation pipeline
- Scoring and metrics
- UI components
- Error handling
## Continuous Integration
Tests are designed to run in CI/CD environments:
- No external dependencies required
- Mock mode prevents API calls
- Fast execution for quick feedback
- Comprehensive coverage reporting