Releases: polishdataengineer/testenix
Release list
Testenix 0.3.0 — Adaptive scheduling and trustworthy benchmarks
Testenix 0.3.0 makes native execution project-aware instead of assuming that the logical CPU count is always the best worker count.
Highlights
- Adaptive
workers = "auto"selection based on execution units, CPU capacity, duration-history coverage, predicted process-start cost, and makespan. - New
testenix tunecommand (also available astestenix benchmark) for fresh-process, counterbalanced worker measurements. Configuration is changed only with explicit--write, guarded by source fingerprints and configuration-drift checks. - Opt-in
--shard-modulesexecution for eligible modules. Conservative static checks retain normal module affinity when fixtures, global mutation, or import-time lifecycle hazards are detected; enabling sharding remains an explicit trust decision for dynamic behavior. - Source-verified collection manifests via
testenix manifest, allowing unchanged suites to avoid a duplicate collection import. Stale manifests safely fall back to supervised collection. - New synthetic 100/500/1,000/3,000-test matrix tooling and a redaction-safe real-project benchmark harness, with bounded timeout cleanup on Windows and POSIX.
Benchmark context
The existing 3.15× result is a historical Testenix 0.1.0 synthetic baseline: 100,000 no-op tests across 16 modules, four workers, --no-history, on one Apple M4 Pro / CPython 3.11 machine. It is not a Testenix 0.3.0 or real-project result.
No clean Testenix 0.3.0 scaling matrix is published with this release, so Testenix does not claim a universal speedup over pytest. Run testenix tune in your own project and consult the documented benchmark methodology before making a project-specific comparison.
Install
python -m pip install --upgrade testenix==0.3.0Full Changelog: v0.2.1...v0.3.0
Testenix v0.2.1 — Clearer native terminal output
Testenix 0.2.1 makes native test runs substantially easier to scan, especially for large suites.
Highlights
testenix runnow uses a compact, deterministic per-file report by default while preserving
complete collection and failure diagnostics.- Added
-q/--quiet,-v/--verbose(including-vv),--show-skips, and--durations N;
use--durations 0to show all durations. - Added
--color auto|always|neverand--no-color, with TTY,NO_COLOR,FORCE_COLOR, CI, and
dumb-terminal handling. - Long paths are bounded to terminal width, durations use adaptive units, and the final summary
remains plain and machine-readable. - Compact rendering stays bounded even for very large suites; 100,000 passing results from one
file are aggregated instead of producing a wall of output. - Documentation now clearly separates native Testenix rendering from the unchanged pytest renderer
used bytestenix pytest.
The transparent pytest bridge is unchanged. For concise output from an existing pytest suite, use:
testenix pytest -q --tb=short testsFor the new native Testenix interface, use:
testenix run testsCompatibility note
The default human-readable testenix run text changed from one row per test to one row per source
file. Scripts should consume JSON or JUnit reports rather than terminal text; -v remains available
for detailed per-test output. Result semantics, exit codes, JSON, JUnit, and the pytest bridge are
unchanged.
Upgrade
python -m pip install --upgrade "testenix==0.2.1"Validation
- 333 project tests passing directly and through the pytest bridge.
- CI passing on Python 3.11-3.14 across Linux, macOS, and Windows.
- Wheel, sdist, Twine, isolated installation, pytest-extra, and native smoke checks passing.
Documentation
Testenix v0.2.0 — Safe pytest migration
Testenix 0.2.0 makes migration from real pytest suites materially more useful while keeping the original test suite untouched.
Highlights
- Native, dependency-free
tmp_pathand transactionalmonkeypatchfixtures. - Native autouse fixtures with deterministic setup and teardown ownership.
- Safe conversion of simple pytest classes using a fresh instance per test.
- Bare
@pytest.mark.asynciomigration with a fresh, closed event loop per test or parametrized case. - Static support for common local helpers that receive
monkeypatch, while aliases, dynamic rebinding, unsupported methods, and escaping values remain blocked. - Fail-closed checks for pytest-asyncio loop scope, debug mode,
event_loop_policy, configuration precedence, and relevantPYTEST_ADDOPTSbehavior. - Clearer migration summaries with complete line-addressed diagnostics available in JSON reports.
Safe migration workflow
python -m pip install --upgrade "testenix[pytest]==0.2.0"
testenix migrate pytest tests --dry-run
testenix migrate pytest tests --check --workers 4Migration remains copy-only and transactional. Source tests are fingerprinted, source and native outcomes are compared, and the destination is published only after all validation gates pass. Original tests are never deleted or renamed.
Validation
- 284 project tests passing.
- CI passing on Python 3.11-3.14 across Linux, macOS, and Windows.
- Wheel, sdist, Twine, isolated installation, pytest-extra, and migration smoke checks passing.
- A real 118-test pytest project validated with 118/118 matching outcomes in pytest, native serial, and native parallel modes.
Observed timings from that final validation run were 3.120 s for pytest, 2.870 s for native serial, and 2.423 s for native parallel. These are validation timings, not a substitute for the published multi-round benchmark methodology.
Documentation
Testenix v0.1.0 - First public release
Testenix 0.1.0
First public release of Testenix - a native Python testing framework focused on
parallel execution, deterministic reporting, resilience, and safe migration
from pytest and unittest.
Highlights
- Native parallel Python test execution
- Async tests and fixtures without additional plugins
- Retries, timeouts, worker-crash recovery, JSON and JUnit reports
- Execution of unchanged pytest suites through
testenix pytest - Safe migration from supported pytest and unittest suites
- Original tests are never overwritten or deleted
- Serial and parallel outcome validation before publishing migrated tests
- Complete SHA-256 source-manifest verification
- Support for Python 3.11–3.14 on Linux, macOS, and Windows
Installation
pip install testenix