CheckOps
mutmut
mutmut is a BSD-3-Clause mutation testing tool for Python that changes your code in small ways and reports which mutants your tests fail to kill, with a terminal UI for browsing results.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
mutmut is a mutation testing system for Python. It makes small changes (mutants) to your source code, such as flipping comparisons, changing numbers or altering strings, then runs your tests against each mutant. If the tests still pass, the mutant “survived”, revealing code whose behaviour is not really checked. This complements coverage, which only shows what ran.
Running mutmut run mutates your code and executes the tests. Version 3 focuses on speed, using fork-based execution and running only the tests relevant to each mutated function; as a result, the README says it must run on a system with fork support, so Windows users need WSL. mutmut browse opens a terminal UI listing mutants by status, where you can view diffs and re-test a function (f) or a mutant (m). You can also apply a mutant to disk with mutmut apply <mutant>, ideally with your code committed first. You can limit runs to specific modules or functions with glob patterns, and configure paths in setup.cfg or pyproject.toml. Version 3.8.0 was released on 12 September 2026.
The source code is at boxed/mutmut on GitHub under the BSD-3-Clause licence, with about 1,500 stars; the most recent commit was on 7 November 2026.
Features
- Python mutation testing: Measures how well tests detect real changes.
- Targeted runs: Mutate selected modules or functions with globs.
- Terminal UI: Browse mutants and diffs with
mutmut browse. - Fast execution: Fork-based runs and per-function test selection.
Pros
- Free to use: Open source under the BSD-3-Clause licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 7 November 2026.
Cons
- No native Windows: Requires
fork, so use WSL on Windows. - Can be slow on big codebases: Start with critical modules.
Usage and Links (Example)
pip install mutmut
mutmut run
mutmut results
mutmut browse
mutmut run "billing.invoice*"
pyproject.toml:
[tool.mutmut]
paths_to_mutate = ["src/"]
Resources:
Pricing
mutmut is free and open source under the BSD-3-Clause licence.
Recommended for?
- Python teams with good coverage who want to measure test effectiveness.
- Critical modules (billing, auth, parsing) where weak tests are costly.
Conclusion
mutmut is the most approachable mutation testing tool for Python, with a fast v3 engine and a handy terminal UI.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with mutmut side by side.
HHypothesisHypothesis is the MPL-2.0 property-based testing library for Python: describe the range of inputs, let it generate cases including edge cases, and get the simplest failing example when a property breaks.Compare with mutmut- Ppytestpytest is the usual Python test runner: plain asserts, fixtures, parametrization, and a large plugin set.Compare with mutmut
CCoverage.pyCoverage.py is the standard Apache-2.0 code coverage tool for Python, measuring line and branch coverage and producing terminal, HTML, XML, JSON and LCOV reports; pytest-cov builds on it.Compare with mutmut
SStrykerJSStrykerJS is the Apache-2.0 mutation testing framework for JavaScript and TypeScript, part of the Stryker Mutator family (with Stryker.NET and Stryker4s), supporting Jest, Vitest, Mocha, Karma and more.Compare with mutmut
PPIT (Pitest)PIT (Pitest) is an Apache-2.0 state-of-the-art mutation testing system for Java and the JVM that mutates bytecode to measure how well your tests detect faults, with Maven and Gradle plugins and HTML reports.Compare with mutmut
IInfectionInfection is a BSD-3-Clause AST-based mutation testing framework for PHP that measures test effectiveness with Mutation Score Indicator metrics, supporting PHPUnit, Pest, Codeception and phpspec.Compare with mutmut