clock
clock copied to clipboard
feat: Set up comprehensive Python testing infrastructure
Set up Python Testing Infrastructure
Summary
This PR establishes a comprehensive testing infrastructure for the DCF77 MutterUhr project, providing a solid foundation for writing and running tests in a Python development environment.
Changes Made
Package Management
- ✅ Added Poetry configuration in
pyproject.tomlwith project metadata and dependencies - ✅ Configured development dependencies:
pytest,pytest-cov,pytest-mock - ✅ Set up Poetry scripts for easy test execution (
poetry run testandpoetry run tests)
Testing Configuration
- ✅ Comprehensive pytest configuration with:
- Test discovery patterns for various test file naming conventions
- Coverage reporting with 80% threshold
- HTML and XML coverage report generation
- Custom markers for
unit,integration, andslowtests - Strict configuration for better test reliability
Directory Structure
tests/
├── __init__.py
├── conftest.py # Shared fixtures and test utilities
├── test_setup_validation.py # Validation tests for infrastructure
├── unit/
│ └── __init__.py # Unit test directory
└── integration/
└── __init__.py # Integration test directory
Testing Utilities
- ✅ Comprehensive fixtures in
conftest.py:temp_dir- Temporary directory for file system testsmock_machine_pin,mock_machine_rtc- Hardware mocking for MicroPython modulesmock_network- WiFi/network functionality mockingmock_urequests- HTTP request mockingmock_secrets- Credentials mockingmock_microdot- Web framework mocking- Sample data fixtures for testing
Development Environment
- ✅ Updated
.gitignorewith comprehensive exclusions:- Testing artifacts (
.pytest_cache/,htmlcov/,.coverage) - Virtual environments and build artifacts
- IDE files and OS-specific files
- Claude Code settings
- Testing artifacts (
Validation
- ✅ Created validation test suite that verifies:
- pytest functionality and Python version compatibility
- Project structure integrity
- Custom test markers functionality
- Fixture availability and mocking capabilities
How to Run Tests
Install Dependencies
poetry install
Run All Tests
poetry run pytest
# or
poetry run test
# or
poetry run tests
Run Specific Test Categories
# Unit tests only
poetry run pytest -m unit
# Integration tests only
poetry run pytest -m integration
# Exclude slow tests
poetry run pytest -m "not slow"
Generate Coverage Reports
poetry run pytest --cov-report=html
# Open htmlcov/index.html in browser to view coverage
Notes
- MicroPython Compatibility: The main application files (
main.py,webtime.py) are MicroPython-specific and excluded from standard Python coverage analysis - Hardware Mocking: Comprehensive mocking fixtures are provided for testing code that interacts with MicroPython hardware modules
- Ready for Development: The infrastructure is immediately ready for developers to start writing unit and integration tests
- Coverage Configured: HTML and XML coverage reports are generated automatically, with an 80% coverage threshold
Testing Infrastructure Validation
All validation tests pass successfully:
- ✅ pytest functionality verified
- ✅ Python version compatibility confirmed
- ✅ Project structure validated
- ✅ Custom markers working correctly
- ✅ Shared fixtures accessible and functional
- ✅ Mocking capabilities operational
The testing infrastructure is now ready for active development and continuous integration workflows.