stestr
A parallel Python test runner built around subunit
Decision gist · record as of 2026-08-14
Yes. stestr is actively maintained, has low install friction, carries a permissive license, and solves a real problem—parallel test execution with result history—for Python projects using unittest. It supports modern Python versions and has no known vulnerabilities. Install it if your project runs unittest suites and would benefit from faster parallel execution or historical test analysis.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.8 or later; project must have unittest-compatible tests discoverable from a configured path.
- Low install friction with a pure-Python wheel distribution.
- Active maintenance with a recent release and ongoing commits; supports current Python versions from 3.8 through 3.14.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows use in most projects, including proprietary software, with minimal restrictions.
last release 2026-02-20 (175 days) · last repo commit 2026-07-22 · 35 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 202,542 downloads/mo, #9,647 on PyPI
Alternatives
Verify before relying
pip install stestr
Create .stestr.conf:
[DEFAULT]
test_path=./tests
Then run: stestr run- Whether stestr's parallel scheduling strategies are documented or tunable for specific workload patterns.
- Performance characteristics when running very large test suites or with many worker processes.
- Integration depth with CI/CD systems beyond tox.
What it is and what it does
stestr is a dedicated test runner for Python projects that executes unittest test suites in parallel across multiple processes to reduce overall test time. It originated as a fork of testrepository but is now a standalone tool focused specifically on Python testing. The runner uses the subunit protocol to stream and aggregate results from multiple workers, and maintains a persistent repository of test run history to help with debugging failures and optimizing test scheduling.
You configure stestr with a .stestr.conf file (or a stestr section in tox.ini) that specifies where tests are located, then invoke stestr run to execute them. The tool handles test discovery, parallel distribution, result collection, and storage automatically. It stores results in a .stestr/ directory in your working directory, allowing you to inspect past runs and compare performance across test cycles.
Use it for
- Speed up CI/CD pipelines by running large unittest suites in parallel across available CPU cores.
- Debug intermittent test failures by replaying specific test runs from the stored history.
- Migrate from testrepository to a modern, actively maintained test runner without rewriting test code.
- Track test performance trends over time by analyzing the persistent repository of run results.
- Run individual tests or modules without discovery overhead using the --no-discover flag.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
stestr is actively maintained, has low install friction, carries a permissive license, and solves a real problem—parallel test execution with result history—for Python projects using unittest. It supports modern Python versions and has no known vulnerabilities. Install it if your project runs unittest suites and would benefit from faster parallel execution or historical test analysis.
Install
stestr on PyPI
Before you install
Low install friction with a pure-Python wheel distribution. Active maintenance with a recent release and ongoing commits; supports current Python versions from 3.8 through 3.14.
Requires Python 3.8 or later; project must have unittest-compatible tests discoverable from a configured path.
License in practice
Apache-2.0 permissive license allows use in most projects, including proprietary software, with minimal restrictions.
Quickstart
pip install stestr
Create .stestr.conf:
[DEFAULT]
test_path=./tests
Then run: stestr run
Verify before relying
- Whether stestr's parallel scheduling strategies are documented or tunable for specific workload patterns.
- Performance characteristics when running very large test suites or with many worker processes.
- Integration depth with CI/CD systems beyond tox.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 7 packagescliffpython-subunitfixturestesttoolsPyYAMLvoluptuoustomlkit |
| Maintenance | Actively maintained 175 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 202,542 / month, #9,647 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersIntended Audience :: Information TechnologyIntended Audience :: System AdministratorsOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Quality AssuranceTopic :: Software Development :: Testing |
Evidence: stestr-4.2.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “parallel python test runner”
- stestrstestr is a parallel test runner for Python unittest suites that…
- zope.testrunnerA test runner for Python projects with support for test layers,…
- rtestA Python test runner built in Rust that uses static AST analysis for…
Give your agent the search over MCP, or paste the wish link into any chat.
More Testing packages
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
virtualenv creates isolated Python environments where packages can be installed independently without affecting the system Python or other projects.
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
pytest-asyncio is a pytest plugin that enables writing and running async test functions using the asyncio library, allowing developers to await code directly within test cases.
Install it if you write tests for any asyncio-based code.
A pytest plugin that generates test reports in Common Test Report Format (CTRF) as JSON, compatible with pytest-xdist and pytest-playwright for distributed and browser-based testing.
Install it if you need CTRF-formatted test output for CI/CD integration or cross-tool reporting.
See also concurrencytest · os-testr · python-subunit · xmlrunner · unittest-xml-reporting · rtest · html-testRunner · robotframework-pabot · nose · pytest-parallel