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] Heads up: the AI cooked dinner. It's edible, but watch your step.
Detailed bug reports welcome.

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.2.1.tar.gz (32.9 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.2.1-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: apathetic_testing-0.2.1.tar.gz
  • Upload date:
  • Size: 32.9 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.2.1.tar.gz
Algorithm Hash digest
SHA256 cf046ce649cc59527762c5030425947e86ae5e46f0169d1dc62db39d11f4679d
MD5 42c265fe7b2f93d1cb04d320f145849b
BLAKE2b-256 b68bc333c417a74a0d71068708a4af1aa45d1102a6c1c20b6adc9b5e98f97fd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for apathetic_testing-0.2.1.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.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for apathetic_testing-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dc759489621d33d29b4c0fc73bc738c8beee7f80563ec1ff599178f9e94aeeaa
MD5 f98ab26e027d6d090d5f67f45dd592e0
BLAKE2b-256 0baba72070d5029f0699e4859a77a99c5904d78f96c76b65097546a8fdab5fe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for apathetic_testing-0.2.1-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