Mutatest
mutatest.readthedocs.io
What it is
Mutatest is a free command-line tool for Python projects that checks whether tests catch small changes to code. It creates valid mutations from Python’s Abstract Syntax Tree grammar and applies them to local __pycache__ files rather than changing source files. If coverage data is available, it can limit targets to lines marked as covered. Mutations are sampled randomly, with a seed available to make runs reproducible. Command-line controls include run modes, mutation categories, file exclusions, timeouts, reports, and thresholds for surviving mutants; an API supports custom controls. The documentation describes using test commands such as pytest and coverage data to filter targets. Mutatest can raise an exception when surviving mutants meet a configured threshold, including in automated runs such as CI. It supports Linux, macOS, and Windows, and is free under the MIT License. Installation requires Python 3.7 or 3.8; multiprocessing is available on 3.8, but not 3.7. Repeated test runs can be slow, so it is intended for diagnostics rather than every commit across an entire codebase.
Spec sheet
- What it does
- Mutatest evaluates Python test quality by introducing small code mutations and checking whether the test suite detects them.Read 15 Oct 2026 · mutatest.readthedocs.io
- Purpose
- Mutatest is a diagnostic command-line tool for assessing test coverage by checking whether tests detect small code mutations.Read 2 Oct 2026 · mutatest.readthedocs.io
- API
- Mutatest includes an API for custom mutation controls.Read 2 Oct 2026 · mutatest.readthedocs.io
- Integrations
- The documentation describes running test commands such as pytest and using coverage data to filter mutation targets.Read 2 Oct 2026 · mutatest.readthedocs.io
- Support
- The project directs users to its GitHub issue tracker to submit bugs or request features.Read 2 Oct 2026 · github.com
- API objects
- The documented API centers on Genome, GenomeGroup and Mutant objects.Read 15 Oct 2026 · mutatest.readthedocs.io
- AST mutation engine
- Mutations are generated from Python's Abstract Syntax Tree grammar.Read 15 Oct 2026 · mutatest.readthedocs.io
- CI use
- Mutatest can raise an exception when surviving mutants meet a configured threshold, for use in automated runs such as a continuous integration stage.Read 2 Oct 2026 · mutatest.readthedocs.io
- CLI configuration
- Settings can be supplied through mutatest.ini or setup.cfg sections named mutatest or tool:mutatest.Read 15 Oct 2026 · github.com
- Controls
- The command line supports run modes, mutation category selection, file exclusions, timeouts, output reports, and survivor thresholds.Read 2 Oct 2026 · mutatest.readthedocs.io
- Coverage
- When coverage data is available, mutation targets can be restricted to lines marked as covered.Read 2 Oct 2026 · mutatest.readthedocs.io
- Coverage guidance
- Coverage data can restrict mutation targets to code executed by tests.Read 15 Oct 2026 · mutatest.readthedocs.io
- Custom API
- The package exposes an API for custom mutation controls.Read 15 Oct 2026 · mutatest.readthedocs.io
- Diagnostic positioning
- The installation guide describes Mutatest as a diagnostic tool and cautions that running a full suite repeatedly can be slow for continuous integration.Read 15 Oct 2026 · github.com
- Documentation depth
- Documentation includes installation, command-line controls, API reference, API tutorial, mutation operators and contributing guidance.Read 15 Oct 2026 · mutatest.readthedocs.io
- Execution modes
- The command line supports fast and detection or survival stopping modes, including f, s, d and sd.Read 15 Oct 2026 · github.com
- Independent activity record
- Ecosyste.ms reported the last repository push as February 17, 2023.Read 15 Oct 2026 · awesome.ecosyste.ms
- Independent popularity record
- Ecosyste.ms reported 97 stars, 18 forks and two watchers when it last synced the repository.Read 15 Oct 2026 · awesome.ecosyste.ms
- Independent repository record
- Ecosyste.ms records the repository as created on December 22, 2018, with MIT licensing.Read 15 Oct 2026 · awesome.ecosyste.ms
- Install channels
- Installation is documented through pip, conda-forge or a local source checkout.Read 15 Oct 2026 · mutatest.readthedocs.io
- Known limitation
- The documentation warns that repeated test-suite runs can make mutation testing slow, so it is intended as a diagnostic tool rather than a run over an entire codebase on every commit.Read 2 Oct 2026 · mutatest.readthedocs.io
- Latest release
- PyPI lists version 3.1.0 as released on February 20, 2022.Read 15 Oct 2026 · pypi.org
- Licence
- PyPI identifies the project as MIT licensed and OSI-approved.Read 15 Oct 2026 · pypi.org
- Limit: diagnostics
- The public issue tracker contains an open report about being unable to retrieve failing-test information for mutants, opened May 28, 2025.Read 15 Oct 2026 · github.com
- Limit: maintenance
- The public issue tracker contains an open request to support newer Python versions, opened November 30, 2025.Read 15 Oct 2026 · github.com
- Limit: mutation coverage
- An open issue reports that type hints are not ignored as mutation targets.Read 15 Oct 2026 · github.com
- Limit: parallel integration
- An independent Reddit comparison says Mutatest lacks pytest-xdist integration and that its last PyPI release was in 2022.Read 15 Oct 2026 · reddit.com
- Maintainer
- PyPI names Evan Kepner as the author and lists one maintainer account, ekepner.Read 15 Oct 2026 · pypi.org
- Mutation method
- It uses Python’s Abstract Syntax Tree grammar to produce valid mutants and changes local __pycache__ files instead of source files.Read 2 Oct 2026 · mutatest.readthedocs.io
- Mutation operators
- Supported operators include arithmetic, bitwise, Boolean, comparison, membership, identity, conditional and index mutations.Read 15 Oct 2026 · github.com
- Notable release history
- The repository release page records version 3.0.0 as a stable release and earlier releases adding setup.cfg configuration and parallel-cache fixes.Read 15 Oct 2026 · github.com
- Operating systems
- The project documentation says it was tested on Linux, Windows and macOS with Azure pipelines.Read 15 Oct 2026 · mutatest.readthedocs.io
- Package or file scope
- Mutation runs can target an entire package or one source file.Read 15 Oct 2026 · mutatest.readthedocs.io
- Parallel execution
- Multiprocessing is supported on Python 3.8; parallelization is not supported on Python 3.7.Read 2 Oct 2026 · mutatest.readthedocs.io
- Parallel trials
- Multiprocessing parallel trials are supported on Python 3.8 through the parallel option.Read 15 Oct 2026 · github.com
- Platform support
- The project says it was tested on Linux, Windows, and MacOS with Azure pipelines.Read 2 Oct 2026 · mutatest.readthedocs.io
- Praise: source safety
- An independent Reddit comparison highlights Mutatest's AST approach and its avoidance of source-file changes.Read 15 Oct 2026 · reddit.com
- Pytest integration
- Pytest is auto-detected for conventional tests and is the only test runner documented as tested.Read 15 Oct 2026 · github.com
- Python package metadata
- PyPI lists Python 3.7 or newer as the requirement, with Python 3.7 and 3.8 classifiers.Read 15 Oct 2026 · pypi.org
- Python support
- The installation documentation requires Python 3.7 or Python 3.8.Read 2 Oct 2026 · mutatest.readthedocs.io
- Random sampling
- Users can choose mutation-location sample size and a random seed for repeatable trials.Read 15 Oct 2026 · github.com
- Reporting
- The API reference documents result summaries containing mutation results, identified and mutated-location counts and total runtime.Read 15 Oct 2026 · mutatest.readthedocs.io
- Sampling
- It randomly samples mutation locations and potential mutations, and a random seed can make trials reproducible.Read 2 Oct 2026 · mutatest.readthedocs.io
- Source protection
- Mutation trials write changes to local __pycache__ files instead of modifying source files.Read 15 Oct 2026 · mutatest.readthedocs.io
- System requirement
- The documented runtime requirement is Python 3.7 or 3.8.Read 15 Oct 2026 · mutatest.readthedocs.io
- Test runner limitation
- Although a test command can be supplied, the documentation says only pytest has been tested to date.Read 2 Oct 2026 · mutatest.readthedocs.io
Plans and prices
Strong points and limits
Strong points
- Can target lines marked covered when coverage data exists.
- A random seed can make trials reproducible.
- Configurable survivor thresholds support automated runs.
- Includes an API for custom mutation controls.
Limits
- Repeated test-suite runs can be slow.
- Only pytest has been tested to date.
- Python 3.7 does not support parallelization.
Who it suits
Mutatest suits Python developers who want to check whether their tests detect small code changes, including in automated runs. It is a diagnostic tool rather than a routine whole-codebase check on every commit.
Verdict
Mutatest offers configurable mutation checks and a threshold for flagging surviving mutants. Its documented test-runner coverage is limited to pytest, and repeated runs may take time.
Where Specifiction places it
- Mutation Testing Tools#1 of 258.7