Skip to content

Conversation

@llbbl
Copy link

@llbbl llbbl commented Jun 27, 2025

Set Up Python Testing Infrastructure

Summary

This PR establishes a complete testing infrastructure for the GAN models project using Poetry as the package manager and pytest as the testing framework. The setup provides a solid foundation for developers to immediately start writing unit and integration tests.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with complete Poetry setup
  • Dependency Migration: Migrated existing dependencies from requirements.txt to Poetry
  • Updated NumPy: Upgraded from numpy 1.14.5 to ^1.21.0 for compatibility

Testing Framework

  • pytest: Main testing framework with full configuration
  • pytest-cov: Coverage reporting with HTML and XML output formats
  • pytest-mock: Mocking utilities for test isolation

Project Structure

tests/
├── __init__.py
├── conftest.py          # Shared fixtures and configuration
├── test_setup_validation.py  # Validation tests
├── unit/
│   └── __init__.py
└── integration/
    └── __init__.py

Testing Configuration

  • Test Discovery: Configured to find tests matching test_*.py, *_test.py, or tests.py
  • Coverage Settings:
    • Tracks all project modules (models, metrics, utils, etc.)
    • Generates HTML and XML coverage reports
    • Currently set to 0% threshold (update as tests are added)
  • Custom Markers:
    • @pytest.mark.unit for unit tests
    • @pytest.mark.integration for integration tests
    • @pytest.mark.slow for long-running tests

Shared Fixtures

Created comprehensive fixtures in conftest.py:

  • temp_dir: Temporary directory management
  • mock_config: Mock configuration object
  • sample_tensor & sample_numpy_array: Test data
  • mock_generator & mock_discriminator: Mock models
  • mock_data_loader: Mock data loading
  • clean_logs: Log directory management
  • setup_random_seeds: Reproducible test runs
  • Device management fixtures for GPU/CPU testing

Development Commands

  • poetry run test: Run all tests
  • poetry run tests: Alternative command (both work)
  • Standard pytest options are available (e.g., -v, -k, -m)

Instructions for Running Tests

  1. Install dependencies:

    poetry install
  2. Run all tests:

    poetry run test
  3. Run specific test files:

    poetry run test tests/test_setup_validation.py
  4. Run tests by marker:

    poetry run test -m unit        # Run only unit tests
    poetry run test -m integration # Run only integration tests
    poetry run test -m "not slow"  # Skip slow tests
  5. View coverage report:

    # After running tests, open the HTML report
    open htmlcov/index.html

Notes

  • The testing infrastructure is ready for immediate use
  • Coverage threshold is currently set to 0% to allow gradual test addition
  • All validation tests pass, confirming the setup works correctly
  • The .gitignore has been updated to exclude test artifacts and Claude-specific files
  • Poetry lock file is tracked in git for reproducible builds

Next Steps

Developers can now:

  1. Write unit tests in tests/unit/
  2. Write integration tests in tests/integration/
  3. Use the provided fixtures for common testing needs
  4. Gradually increase coverage threshold as tests are added

- Configure Poetry as package manager with pyproject.toml
- Add pytest, pytest-cov, and pytest-mock as dev dependencies
- Configure pytest with coverage reporting and custom markers
- Create test directory structure with unit/integration subdirs
- Add comprehensive shared fixtures in conftest.py
- Set up test runner scripts (poetry run test/tests)
- Update .gitignore with Claude-specific entries
- Create validation tests to verify setup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant