UniRepLKNet
UniRepLKNet copied to clipboard
feat: Set up comprehensive Python testing infrastructure with Poetry
Set up Python Testing Infrastructure
Summary
This PR establishes a comprehensive testing infrastructure for the UniRepLKNet project using Poetry as the package manager and pytest as the testing framework. The setup provides a solid foundation for writing and maintaining tests across all modules (Audio, Image, Video, Point Cloud, Time-Series, Detection, and Segmentation).
Changes Made
Package Management
- Poetry Setup: Created
pyproject.tomlwith Poetry configuration - Dependency Migration: Migrated all dependencies from
requirements.txtfiles - Optional Dependencies: Made platform-specific packages (triton, decord) optional to ensure cross-platform compatibility
Testing Framework
-
pytest Configuration:
- Configured test discovery patterns
- Added custom markers:
unit,integration,slow - Set up coverage reporting (HTML, XML, terminal)
- Configured strict mode and output formatting
-
Coverage Configuration:
- Source directories and exclusion patterns defined
- Multiple report formats configured
- Coverage thresholds set (currently 0% to allow gradual adoption)
Project Structure
tests/
├── __init__.py
├── conftest.py # Shared fixtures for all tests
├── unit/ # Unit tests directory
│ └── __init__.py
├── integration/ # Integration tests directory
│ └── __init__.py
└── test_setup_validation.py # Validation tests
Shared Fixtures (conftest.py)
Created comprehensive fixtures for testing all module types:
- General:
temp_dir,mock_config,device,random_seed - Image/Video:
sample_image_tensor,sample_batch,sample_video_tensor - Audio:
sample_audio_tensor - Point Cloud:
sample_point_cloud - Time Series:
sample_time_series - Model/Data:
mock_model,mock_dataset,mock_dataloader - Utilities:
checkpoint_path,sample_checkpoint,env_setup,capture_logs
Development Tools
Added development dependencies:
- Testing: pytest, pytest-cov, pytest-mock
- Code Quality: black, isort, flake8, mypy
- Pre-commit: pre-commit hooks configuration
Additional Updates
- Updated
.gitignoreto exclude testing artifacts and Claude settings - Created validation tests to ensure infrastructure works correctly
How to Use
Installation
# Install Poetry (if not already installed)
curl -sSL https://install.python-poetry.org | python3 -
# Install dependencies
poetry install
Running Tests
# Run all tests
poetry run test
# or
poetry run tests
# Run specific test file
poetry run pytest tests/test_setup_validation.py
# Run tests with specific marker
poetry run pytest -m unit
poetry run pytest -m integration
poetry run pytest -m "not slow"
# Run with coverage report
poetry run pytest --cov-report=html
Writing Tests
- Place unit tests in
tests/unit/ - Place integration tests in
tests/integration/ - Use fixtures from
conftest.pyfor common test needs - Mark tests appropriately:
@pytest.mark.unit,@pytest.mark.integration,@pytest.mark.slow
Next Steps
- Developers can now start writing unit tests for individual modules
- Integration tests can be added for cross-module functionality
- Coverage threshold can be gradually increased as more tests are added
- Pre-commit hooks can be enabled for automated code quality checks
Notes
- The Image module was missing
__init__.py, which has been added - Platform-specific dependencies (triton, decord) are marked as optional
- Coverage threshold is set to 0% initially to allow immediate use while tests are being written
- All 23 validation tests pass successfully, confirming the infrastructure is working