FREEDOM251

Freedom251 › Mutation Testing Tools

mutmut

Free plan LinuxMacSelf-hostedWindows

Visit mutmut Alternatives

mutmut's own site

What mutmut is

mutmut is a free, open-source mutation testing system for Python that helps developers check whether tests detect changes to code. Its listed operators increment integer literals by 1, change < to <=, and swap break and continue. It works with pytest, remembers completed work for incremental runs, and selects tests to execute for each mutant. An interactive terminal interface lets users browse mutants, write one to disk, and then add tests and rerun individual mutants. mutmut describes execution as parallel. When configured, coverage.py can limit mutations to covered lines; mypy or pyrefly can filter mutants, while pyright and ty are not supported for this purpose. For CI/CD, it can export statistics and generate mutation score badge JSON for a Shields endpoint. The package requires Python 3.10 or later and a system with fork support, so Windows users must run it inside WSL. Version 3 and later mutate code inside functions, while version 2 follows a different model for code outside functions. The package uses the BSD-3-Clause license.

Who it suits

It suits Python developers using pytest who want incremental mutation runs and an interactive way to inspect mutants. Windows users need a WSL environment, and the package requires Python 3.10 or later.

What it does well

  • Remembers completed work for incremental runs.
  • Selects tests to run for each mutant.
  • Interactive terminal interface for browsing mutants.
  • Can use coverage.py, mypy, or pyrefly filters.
  • Exports CI statistics and mutation score badge JSON.

What to know first

  • Requires Python 3.10 or later.
  • Windows users must run it inside WSL.
  • pyright and ty are not supported for mutant filtering.
  • Version 2 uses a different model outside functions.

Getting started

  1. Open the mutmut documentation website.
  2. Use a system with fork support; on Windows, run it inside WSL.
  3. Install and run it with Python 3.10 or later in a pytest project.
  4. Configure source paths or pytest selection arguments in setup.cfg or pyproject.toml if needed.
  5. Run mutation testing, browse mutants in the terminal, add tests, and rerun individual mutants.

Verdict

mutmut provides an incremental mutation-testing workflow with pytest, mutant browsing, and optional coverage or type-checking filters. Its fork-support requirement and Windows WSL constraint are important setup considerations.

Questions

How much does mutmut cost?

It is free and open source under the BSD-3-Clause license.

Which platforms does mutmut support?

It supports Linux, macOS, and self-hosted use. Windows users must run it inside WSL because it requires fork support.

Which language and test framework does it support?

It supports Python and lists pytest as its test framework. Python 3.10 or later is required.

Can it use coverage and type checking?

When configured, coverage.py can filter mutations to covered lines. The documentation supports filtering with mypy or pyrefly, but not pyright or ty.

Can it report results to CI?

It can export CI/CD statistics and generate mutation score badge JSON for a Shields endpoint.

Facts from mutmut's own pages

Applying mutants
Users can write a mutant to disk from the browse interface or with the mutmut apply command. · mutmut.readthedocs.io, 7 Oct 2026
CI output
It can export CI statistics and create mutation score badge data for a Shields endpoint. · mutmut.readthedocs.io, 8 Oct 2026
Configuration
Configuration is supported in setup.cfg or pyproject.toml, including source paths and pytest test selection arguments. · mutmut.readthedocs.io, 8 Oct 2026
Coverage and type checking
Optional filters can use coverage.py to select covered lines and mypy or pyrefly to filter invalid mutants. · mutmut.readthedocs.io, 8 Oct 2026
Coverage integration
mutmut can use coverage.py to filter mutations to covered lines when configured. · mutmut.readthedocs.io, 7 Oct 2026
Distribution
The PyPI listing shows mutmut version 3.8.0, released September 12, 2026. · pypi.org, 7 Oct 2026
Incremental runs
It remembers completed work so mutation testing can continue incrementally. · mutmut.readthedocs.io, 8 Oct 2026
Interface
It provides an interactive terminal based interface for browsing mutants. · mutmut.readthedocs.io, 8 Oct 2026
License
The package is distributed under the BSD-3-Clause license. · pypi.org, 8 Oct 2026
Mutation scope
The documentation says mutmut 3 and later mutate code inside functions, while mutmut 2 has a different execution model for code outside functions. · mutmut.readthedocs.io, 7 Oct 2026
Operating system requirement
mutmut requires a system with fork support; Windows users must run it inside WSL. · mutmut.readthedocs.io, 7 Oct 2026
Parallel execution
The project lists parallel and fast execution as features. · mutmut.readthedocs.io, 8 Oct 2026
Purpose
mutmut is a mutation testing system for Python focused on ease of use. · mutmut.readthedocs.io, 8 Oct 2026
Pytest
A basic run invokes pytest on tests in a tests or test folder. · mutmut.readthedocs.io, 8 Oct 2026
Python requirement
The package requires Python 3.10 or later. · pypi.org, 8 Oct 2026
Security and compliance
The project repository identifies its license as BSD-3-Clause. · github.com, 7 Oct 2026
Test selection
It determines which tests to execute for a mutant to speed up mutation testing. · mutmut.readthedocs.io, 8 Oct 2026
Type checker integration
The documentation supports filtering mutants with mypy or pyrefly and says pyright and ty are not currently supported for this purpose. · mutmut.readthedocs.io, 7 Oct 2026
Windows requirement
mutmut requires fork support, so the documentation says Windows users must run it inside WSL. · mutmut.readthedocs.io, 8 Oct 2026
Workflow
Users can browse mutants, write tests to kill them, and rerun individual mutants. · mutmut.readthedocs.io, 8 Oct 2026

Where mutmut stands on Freedom251

Look at these too