Skip to content

Conversation

@llbbl
Copy link

@llbbl llbbl commented Jun 17, 2025

Add Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the Python RAKE implementation project using Poetry as the package manager and pytest as the testing framework.

Changes Made

Package Management

  • Poetry Configuration: Created pyproject.toml with Poetry configuration for dependency management
  • Dependencies: Added pytest (7.4.0+), pytest-cov (4.1.0+), and pytest-mock (3.11.0+) as development dependencies

Testing Configuration

  • pytest Settings: Configured in pyproject.toml with:
    • Test discovery patterns for flexible test file naming
    • Coverage reporting with 80% threshold (configurable)
    • Custom markers for test categorization (unit, integration, slow)
    • Strict configuration for consistent test runs

Directory Structure

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

Shared Fixtures (conftest.py)

  • temp_dir: Creates temporary directories for testing
  • temp_file: Creates temporary files with content
  • sample_text: Provides sample text for keyword extraction
  • stopwords_list: Sample stopwords for testing
  • mock_rake_instance: Mock Rake instance for unit tests
  • stopwords_file: Creates temporary stopwords files
  • mock_file_operations: Mocks file I/O operations
  • benchmark_data: Provides text samples of various sizes

Build Tools

  • Makefile: Added for convenient command shortcuts:
    • make test - Run all tests
    • make test-cov - Run tests with coverage reporting
    • make test-unit - Run only unit tests
    • make test-integration - Run only integration tests
    • make install - Install dependencies
    • make clean - Clean generated files

Other Updates

  • .gitignore: Added testing-related entries (.pytest_cache/, htmlcov/, .coverage, etc.)
  • CLAUDE.md: Updated with testing commands and project structure

How to Use

  1. Install dependencies:

    make install
    # or
    poetry install
  2. Run tests:

    make test
    # or
    poetry run pytest
  3. Run tests with coverage:

    make test-cov
  4. Run specific test categories:

    make test-unit      # Unit tests only
    make test-integration  # Integration tests only

Notes

  • The rake.py file appears to have Python 2 syntax. The validation test skips the import test for now
  • Coverage is configured but not enforced in the default test run to avoid failures with the Python 2 code
  • All testing infrastructure is ready for developers to start writing tests immediately
  • The setup follows Python testing best practices with pytest

- Set up Poetry as package manager with pyproject.toml
- Add pytest, pytest-cov, and pytest-mock as dev dependencies
- Configure pytest with coverage settings and custom markers
- Create testing directory structure (tests/unit, tests/integration)
- Add shared fixtures in conftest.py for common test scenarios
- Update .gitignore with testing-related entries
- Add Makefile with convenient test commands
- Include 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