📘 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.
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()# Using poetry
poetry add apathetic-testing
# Using pip
pip install apathetic-testingFor installation guides, API reference, examples, and more, visit our documentation website.
- 🔍 Logging Fixtures — Isolated logging state, TEST level debugging, level change assertions
- 🎯 Safe Patching —
patch_everywherefor reliable mocking in package, stitched, and zipapp modes - 🔄 Runtime Testing —
runtime_swapto 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
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.