Freedom251 › Mutation Testing Tools
Mutatest

What Mutatest is
Mutatest is a free command-line diagnostic tool for Python projects that checks whether tests detect small code changes, known as mutants. It uses Python’s Abstract Syntax Tree grammar to generate valid mutations and changes local __pycache__ files rather than source files. When coverage data is available, targets can be limited to lines marked as covered. Mutatest samples mutation locations and possible mutations randomly, with an optional seed for repeatable trials. Controls include run modes, mutation categories, file exclusions, timeouts, reports and survivor thresholds, and an API supports custom mutation controls. It can raise an exception when surviving mutants meet a configured threshold, which can be used in automated runs such as a CI stage. The documentation describes test commands such as pytest, and says only pytest has been tested to date. Installation requires Python 3.7 or 3.8; multiprocessing is supported on 3.8 but not 3.7. Repeated test runs can make mutation testing slow, so the project describes it as a diagnostic tool rather than a check for every commit across an entire codebase.
Who it suits
Mutatest suits Python developers who want to check whether tests catch small code changes, including in automated runs. It is intended for diagnostic use rather than repeated mutation testing of an entire codebase on every commit.
What it does well
- Can focus mutation targets on covered lines.
- Random seeds make trials reproducible.
- Survivor thresholds can trigger automated exceptions.
- Supports reports and custom mutation controls.
What to know first
- Repeated test runs can make it slow.
- Only pytest has been tested to date.
- Python 3.7 does not support parallelization.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Mutatest | Free and open source under the MIT License | Free |
As mutatest.readthedocs.io lists them, read 2 Oct 2026. The maker's own page has the final word.
Getting started
- Open the Mutatest website.
- Use the installation documentation for Python 3.7 or Python 3.8.
- Choose a run mode and mutation categories, and set any file exclusions or timeouts.
- Supply a test command; pytest is the only runner the project says it has tested.
- Optionally provide coverage data, a random seed, or a surviving-mutant threshold.
Mutatest is a command-line mutation-testing tool for Python projects. It is best suited to developers who want targeted diagnostics and can work within its Python and test-runner constraints. Its coverage filtering and configurable thresholds are useful, but repeated test runs make whole-codebase checks on every commit a poor fit.
Overview
Mutatest checks whether tests catch small changes by generating valid mutations from Python’s Abstract Syntax Tree grammar. It changes local __pycache__ files rather than source files, keeping mutation runs from directly altering the source files themselves.
When coverage data is available, targets can be restricted to covered lines. Mutatest also samples mutation locations and possible changes randomly; a seed makes a trial reproducible. The trade-off is runtime: repeated suite runs make this a diagnostic tool, not a practical full-codebase check on every commit.
Key features
Configurable mutation runs
Command-line controls include run modes, mutation categories, file exclusions, timeouts, output reports, and thresholds for surviving mutants. Operators cover augmented assignment, binary and bitwise operations, Boolean logic, comparisons, conditionals, indexing, names, and slices. An API offers custom mutation controls for workflows that need more than the command-line settings.
Coverage and automated checks
Mutatest can use coverage data to focus mutations on lines tests reach, while a random seed supports repeatable sampling. It can also raise an exception when surviving mutants meet a configured threshold, allowing teams to use mutation results as a CI quality gate. These controls support targeted automation, though the cost of rerunning tests argues for selective use.
Pricing
Mutatest is free and open source under the MIT License. The Mutatest plan costs nothing, with no paid plan or trial to weigh against its capabilities.
Platforms
Mutatest supports Linux, macOS, and Windows, and the project says it has been tested on all three using Azure pipelines. It supports Python 3.7 and 3.8; multiprocessing is available on 3.8 but not 3.7. That narrow version range is a material constraint for teams using newer Python releases.
Although users can supply a test command, only pytest has been tested. Teams relying on another runner should treat compatibility as uncertain rather than assume it will work the same way.
Who it's for
Mutatest suits Python developers who want to investigate whether tests detect small code changes, especially when coverage data can focus the run and thresholds can flag survivors in automation. It is less appropriate for teams that need broad mutation checks on every commit, depend on parallel execution under Python 3.7, or require a tested runner other than pytest.
Pros and cons
Pros
- Focused runs: Coverage filtering can target lines tests reach, reducing wasted mutation checks.
- Useful controls: Sampling seeds, exclusions, timeouts, reports, and survivor thresholds support repeatable, tailored diagnostics.
- CI thresholding: Raising an exception at a survivor threshold makes mutation results usable as an automated gate.
- No license cost: The MIT-licensed project is free to use.
Cons
- Limited Python versions: Installation requires Python 3.7 or 3.8, restricting teams on other versions.
- Runner uncertainty: Only pytest has been tested, despite the ability to supply a test command.
- Slow for frequent broad runs: Repeated suite execution makes whole-codebase checks on every commit impractical.
- No multiprocessing on Python 3.7: Parallel execution is limited to Python 3.8.
Alternatives
For a broader comparison, browse Mutation Testing Tools. Consider ArcMutate if you want a freemium option with a free trial and Linux, macOS, self-hosted, and Windows platforms. Mutant is another freemium option, with a free plan for public repositories and a commercial monthly plan billed per developer.
pymute is a free Linux option that requires Rust and Cargo. pytest-gremlins is a free MIT-licensed Python package requiring Python 3.11 or later, which may suit projects on that version. Stryker Mutator is a free open-source option for JavaScript, TypeScript, C#, and Scala. Gambit is a free open-source project available on Linux, macOS, and Windows. Infection is a free option available on Linux, macOS, and the web. mutmut is a free option available on Linux, macOS, self-hosted environments, and Windows.
Verdict
Choose Mutatest if you need free, configurable mutation diagnostics for a Python project that fits its Python 3.7 or 3.8 requirement and pytest-tested workflow. Coverage targeting and CI thresholds give it practical value for focused checks. Look elsewhere if you need a tested alternative runner, broader Python-version support, or fast mutation checks across the whole codebase on every commit.
Verdict
Mutatest offers configurable mutation checks for assessing Python test suites, with threshold handling for automated runs. Its documented Python-version and test-runner limits are worth considering before adding it to a workflow.
Questions
How much does Mutatest cost?
The listed Mutatest plan is free.
Is Mutatest open source?
Yes. It is free and open source under the MIT License.
Which platforms does it support?
The listed platforms are Linux, macOS, and Windows. The project says it was tested on all three with Azure pipelines.
Which Python versions can I use?
Installation requires Python 3.7 or Python 3.8. Multiprocessing is supported on Python 3.8, but parallelization is not supported on Python 3.7.
Which test frameworks are supported?
The listed test framework is pytest, and the project says pytest is the only test runner it has tested.
Can Mutatest be used in CI?
Yes. It can raise an exception when surviving mutants meet a configured threshold, for use in an automated run such as a CI stage.
Facts from Mutatest's own pages
- API
- Mutatest includes an API for custom mutation controls. · mutatest.readthedocs.io, 2 Oct 2026
- API objects
- The documented API centers on Genome, GenomeGroup and Mutant objects. · mutatest.readthedocs.io, 15 Oct 2026
- AST mutation engine
- Mutations are generated from Python's Abstract Syntax Tree grammar. · mutatest.readthedocs.io, 15 Oct 2026
- 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. · mutatest.readthedocs.io, 2 Oct 2026
- CLI configuration
- Settings can be supplied through mutatest.ini or setup.cfg sections named mutatest or tool:mutatest. · github.com, 15 Oct 2026
- Controls
- The command line supports run modes, mutation category selection, file exclusions, timeouts, output reports, and survivor thresholds. · mutatest.readthedocs.io, 2 Oct 2026
- Coverage
- When coverage data is available, mutation targets can be restricted to lines marked as covered. · mutatest.readthedocs.io, 2 Oct 2026
- Coverage guidance
- Coverage data can restrict mutation targets to code executed by tests. · mutatest.readthedocs.io, 15 Oct 2026
- Custom API
- The package exposes an API for custom mutation controls. · mutatest.readthedocs.io, 15 Oct 2026
- 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. · github.com, 15 Oct 2026
- Documentation depth
- Documentation includes installation, command-line controls, API reference, API tutorial, mutation operators and contributing guidance. · mutatest.readthedocs.io, 15 Oct 2026
- Execution modes
- The command line supports fast and detection or survival stopping modes, including f, s, d and sd. · github.com, 15 Oct 2026
- Independent activity record
- Ecosyste.ms reported the last repository push as February 17, 2023. · awesome.ecosyste.ms, 15 Oct 2026
- Independent popularity record
- Ecosyste.ms reported 97 stars, 18 forks and two watchers when it last synced the repository. · awesome.ecosyste.ms, 15 Oct 2026
- Independent repository record
- Ecosyste.ms records the repository as created on December 22, 2018, with MIT licensing. · awesome.ecosyste.ms, 15 Oct 2026
- Install channels
- Installation is documented through pip, conda-forge or a local source checkout. · mutatest.readthedocs.io, 15 Oct 2026
- Integrations
- The documentation describes running test commands such as pytest and using coverage data to filter mutation targets. · mutatest.readthedocs.io, 2 Oct 2026
- 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. · mutatest.readthedocs.io, 2 Oct 2026
- Latest release
- PyPI lists version 3.1.0 as released on February 20, 2022. · pypi.org, 15 Oct 2026
- Licence
- PyPI identifies the project as MIT licensed and OSI-approved. · pypi.org, 15 Oct 2026
- Limit: diagnostics
- The public issue tracker contains an open report about being unable to retrieve failing-test information for mutants, opened May 28, 2025. · github.com, 15 Oct 2026
- Limit: maintenance
- The public issue tracker contains an open request to support newer Python versions, opened November 30, 2025. · github.com, 15 Oct 2026
- Limit: mutation coverage
- An open issue reports that type hints are not ignored as mutation targets. · github.com, 15 Oct 2026
- Limit: parallel integration
- An independent Reddit comparison says Mutatest lacks pytest-xdist integration and that its last PyPI release was in 2022. · reddit.com, 15 Oct 2026
Where Mutatest stands on Freedom251
- Mutation Testing Tools#1 of 25