mutmut
mutation testing for Python 3
Decision gist · record as of 2026-08-14
Yes. Mutmut is actively maintained, has no known vulnerabilities, low install friction, and solves a real problem—verifying that your tests actually detect bugs rather than just achieving coverage numbers. It's particularly valuable if you want to move beyond line-coverage metrics to genuine test quality. The fork() requirement and occasional Rust compilation on some architectures are minor friction, not blockers.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires a system with fork() support; Windows users must run inside WSL.
- Some architectures may need Rust toolchain installed for libcst compilation.
- Low install friction with a pure-Python wheel.
License · maintenance · safety
BSD-3-Clause (permissive) — BSD-3-Clause (permissive) allows commercial use, modification, and distribution with minimal restrictions—suitable for most projects.
last release 2026-07-31 (14 days) · last repo commit 2026-08-09 · 1,391 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 3,598,450 downloads/mo, #2,566 on PyPI
Alternatives
Verify before relying
pip install mutmut
mutmut run
mutmut browse- Whether the interactive TUI (textual dependency) works reliably across all terminal environments and operating systems.
- Performance characteristics on large codebases—how mutation testing scales with project size and test suite complexity.
What it is and what it does
Mutmut is a mutation testing framework that systematically modifies your Python code and reruns your tests to see if they catch the changes. By introducing small, deliberate bugs (mutants) into your source code, it reveals whether your test suite is actually detecting problems or just achieving high line coverage without meaningful assertions. The tool integrates with pytest, remembers previous work for incremental runs, and provides an interactive terminal UI for browsing and applying mutants to disk.
You run it with simple commands—`mutmut run` to generate and test mutants, then `mutmut browse` to explore results interactively. It supports configuration via setup.cfg or pyproject.toml, allows you to exclude specific files or functions, and can filter mutants using coverage.py or type checkers like mypy to reduce noise. The main constraint is that it requires fork() support, making it unsuitable for native Windows (though WSL works).
Use it for
- Evaluate whether your test suite would catch real bugs by running it against mutated versions of your code.
- Identify undertested functions or modules where mutants survive (tests don't fail when code is modified).
- Incrementally improve test quality by applying mutants to disk and writing tests that catch them.
- Optimize test suites by filtering mutants with coverage.py to focus on actually-executed lines.
- Validate type-checked code by filtering out mutations that static type checkers would reject anyway.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Mutmut is actively maintained, has no known vulnerabilities, low install friction, and solves a real problem—verifying that your tests actually detect bugs rather than just achieving coverage numbers. It's particularly valuable if you want to move beyond line-coverage metrics to genuine test quality. The fork() requirement and occasional Rust compilation on some architectures are minor friction, not blockers.
Install
mutmut on PyPI
Before you install
Low install friction with a pure-Python wheel. Active maintenance with a recent release (14 days ago) and steady development since 2016. Requires Python 3.10+. Note: libcst dependency may require a Rust compiler on some architectures (e.g., x86_64-darwin) if prebuilt binaries are unavailable.
Requires a system with fork() support; Windows users must run inside WSL. Some architectures may need Rust toolchain installed for libcst compilation.
License in practice
BSD-3-Clause (permissive) allows commercial use, modification, and distribution with minimal restrictions—suitable for most projects.
Quickstart
pip install mutmut
mutmut run
mutmut browse
Verify before relying
- Whether the interactive TUI (textual dependency) works reliably across all terminal environments and operating systems.
- Performance characteristics on large codebases—how mutation testing scales with project size and test suite complexity.
Package facts
| License | BSD-3-Clause permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 7 packagesclickcoveragelibcstpytestsetproctitletextualtoml |
| Maintenance | Actively maintained 14 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,598,450 / month, #2,566 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersNatural Language :: EnglishProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14 |
Evidence: mutmut-3.7.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “test quality verification”
- mutmutMutmut is a mutation testing system for Python that automatically…
- dirhashComputes a single hash value for an entire directory based on its…
- crosshair-toolCrossHair uses symbolic execution and SMT solving to find…
Give your agent the search over MCP, or paste the wish link into any chat.
More Quality Assurance packages
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.
pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.
Install it if your test suite takes long enough that parallelization would save meaningful time.
Validates AWS CloudFormation templates in YAML or JSON format against resource provider schemas and best practices, checking property values and configuration correctness.
Install it if you work with CloudFormation templates.
See also cosmic-ray · atheris · pytest-doctestplus · purify · coverage_enable_subprocess · varcode · flake8-mutable · pytest-codeblocks · coverage-conditional-plugin