mutmut vs pymute
mutmut
mutmut.readthedocs.iopymute
github.comSide by side
| Figure | mutmut | pymute |
|---|---|---|
| Price from | — | Free |
| Free plan | — | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | — |
| macOS | Yes | — |
| Linux | Yes | Yes |
| Self-hosted | Yes | — |
| Plans published | 0 | 1 |
| Spec score · Mutation Testing Tools | 7.2 (#16) | 7.7 (#9) |
| Configuration | Configuration is supported in setup.cfg or pyproject.toml, including source paths and pytest test selection arguments. | Users can restrict mutations by module glob, select tests, choose mutation types, set thread count, and cap the number of mutants. |
| Distribution | The PyPI listing shows mutmut version 3.8.0, released September 12, 2026. | The README says to install pymute using Cargo from crates.io or directly from GitHub, and requires Rust and Cargo. |
| License | The package is distributed under the BSD-3-Clause license. | The repository identifies its license as Unlicense. |
| Purpose | mutmut is a mutation testing system for Python focused on ease of use. | Pymute is a mutation testing tool for Python and Pytest written in Rust. |
| Test selection | It determines which tests to execute for a mutant to speed up mutation testing. | The --tests option runs selected tests, which the README recommends for quicker iteration on specific modules. |
Plans
In their own words
mutmut
mutmut is a free, open-source mutation testing system for Python. It makes small code changes called mutants so developers can check whether tests detect them. Its listed operators increment integer literals by one, change < to <=, and swap break and continue. The project supports pytest and remembers completed work for incremental runs, selecting tests to run for each mutant. An interactive terminal interface lets users browse mutants, write one to disk, and rerun individual cases after adding tests. Runs are described as parallel; configured coverage.py can restrict mutations to covered lines. The documentation also supports filtering with mypy or pyrefly, but not pyright or ty. For CI/CD, mutmut can export statistics and generate mutation-score badge JSON for a Shields endpoint. Configuration in setup.cfg or pyproject.toml can specify source paths and pytest selection arguments. It requires Python 3.10 or later and a system with fork support, so Windows users need WSL. Version 3 and later mutate code inside functions; version 2 uses a different model for code outside functions. The package is licensed under BSD-3-Clause.
pymute
pymute is a free mutation testing tool for Python projects using pytest or tox, written in Rust. It creates a temporary directory for each mutant and changes Python file text rather than operating on the abstract syntax tree. Pytest is the default runner, and documented mutation types include math operators, conjunctions, booleans, control flow, comparisons and numbers. By default, it reports mutants that survive because tests pass; other output levels can show caught mutants or process output. Options let users filter modules with a glob, select tests and mutation types, set thread count and cap the number of mutants. That cap runs a randomly selected subset. Installation uses Cargo from crates.io or GitHub and requires Rust and Cargo. With pytest, tests need to run from the project root in independent copies and exercise the local copy rather than an installed package. Tox sets up a separate environment and installs the package for each mutant, which the project describes as considerably slower. Parallel threads each need temporary disk space, and a run may fail if /tmp runs out. The repository identifies its license as Unlicense.