Skip to main content

Runtime-aware pytest extensions.

Project description

Apathetic Python Testing 🧪

CI License: MIT-a-NOAI Discord

📘 Roadmap · 📝 Release Notes

Runtime-aware pytest extensions.
When you need just a bit more.

Apathetic Python Testing provides a focused collection of pytest fixtures and utilities designed for Apathetic Tools projects. It helps you test CLI applications, logging behavior, and code that ships as stitched scripts or zipapps.

Some ways to generate stitched scripts are serger; and for zipapps: zipbundler or stdlib's zipapp.

[!NOTE] This project is largely AI-written and minimally polished. I rely on it, but I haven't reviewed every detail. Expect rough edges. Thoughtful issue reports are appreciated.

Quick Start

from apathetic_testing import patch_everywhere, runtime_swap
from apathetic_testing.logging import (
    isolated_logging,
    logging_test_level,
    logging_level_testing,
)

# Test log level isolation
def test_app_logging(isolated_logging):
    # Each test gets fresh logging state
    isolated_logging.set_root_level("DEBUG")
    my_app.run()

# Debug with maximum verbosity
def test_app_with_debugging(logging_test_level):
    # Root logger at TEST level - all logs visible
    my_app.run()

# Test log level changes
def test_cli_debug_flag(logging_level_testing):
    cli.main(["--log-level", "debug"])
    logging_level_testing.assert_level_changed_from("ERROR", to="DEBUG")

# Safe patching in all runtime modes
from unittest.mock import Mock
with patch_everywhere("module.function", Mock(return_value=42)):
    result = module.function()

# Test stitched/zipapp builds
def test_in_stitched_mode(runtime_swap):
    # Automatically swaps to stitched mode if available
    import my_package
    my_package.function()

Installation

# Using poetry
poetry add apathetic-testing

# Using pip
pip install apathetic-testing

Documentation

📚 Full Documentation →

For installation guides, API reference, examples, and more, visit our documentation website.

Features

  • 🔍 Logging Fixtures — Isolated logging state, TEST level debugging, level change assertions
  • 🎯 Safe Patchingpatch_everywhere for reliable mocking in package, stitched, and zipapp modes
  • 🔄 Runtime Testingruntime_swap to test stitched scripts and zipapp builds
  • 🪶 Lightweight — Minimal dependencies (only apathetic-logging)
  • 🧪 CLI-Focused — Designed for testing command-line applications and config-driven tools
  • 🔧 Helper Utilities — Mock superclass detection, assertion helpers, and more

⚖️ License

You're free to use, copy, and modify the library under the standard MIT terms.
The additional rider simply requests that this project not be used to train or fine-tune AI/ML systems until the author deems fair compensation frameworks exist.
Normal use, packaging, and redistribution for human developers are unaffected.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apathetic_testing-0.3.0.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apathetic_testing-0.3.0-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

File details

Details for the file apathetic_testing-0.3.0.tar.gz.

File metadata

  • Download URL: apathetic_testing-0.3.0.tar.gz
  • Upload date:
  • Size: 33.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for apathetic_testing-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5eb767186c064e0f4cfcfbbda4bf3d41758071954792d778264c6b1fe8af641b
MD5 0be9d6141c8310f557d45c397b92a095
BLAKE2b-256 ef48f45d469bdd4a64a110501a0c32ed08c41dc745ac26ca406d681207e2a3a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for apathetic_testing-0.3.0.tar.gz:

Publisher: publish_pypi.yml on apathetic-tools/python-testing

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file apathetic_testing-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for apathetic_testing-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7639e3733165cd925a65fb45a5fa4edde42aa3b89350fc47e6810d5f264fd254
MD5 ff6acfc4bc4734766f54b7434f069251
BLAKE2b-256 567e784fbec6a5fc1f16c2d2f39cc008f6d7b5fe8c39c8c21dc154b11f96e3a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for apathetic_testing-0.3.0-py3-none-any.whl:

Publisher: publish_pypi.yml on apathetic-tools/python-testing

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page