Freedom251 › Mutation Testing Tools
pymute

What pymute is
pymute is a free mutation testing tool for Python projects that use pytest or tox. Written in Rust, it creates a temporary project directory for each mutant and changes Python source text rather than working with the abstract syntax tree. Pytest is the default runner; tox is another option. The documented mutations cover math operators, conjunctions, booleans, control flow, comparisons, and numbers. By default, the output highlights mutants that survive because tests pass; other output levels can show caught mutants or process output. You can limit files with a module glob, choose tests and mutation types, set the thread count, and cap the number of mutants. That cap selects a random subset. Installation is through Cargo 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 installs the package in a separate environment for each mutant, which takes considerably longer. Parallel threads also need temporary disk space, and runs can fail if /tmp fills up.
Who it suits
pymute suits Python developers who want to check how well pytest or tox catches code changes. It is a fit for projects able to meet its pytest project-root constraint or accept tox's slower environment setup.
What it does well
- Free to use; installation is through Cargo.
- Supports pytest and tox test runners.
- Offers six documented mutation categories.
- Can select tests and limit mutations by module.
- Can run mutants in parallel.
What to know first
- Requires Rust and Cargo.
- Pytest requires root-based tests on local project copies.
- Tox setup is considerably slower.
- Parallel threads need temporary disk space.
Limits
The free plan is listed as free. No free-plan quota is listed; parallel threads each need temporary disk space, and a run may fail if /tmp runs out.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Free/open-source | Install with Cargo; requires Rust and Cargo | Free |
As github.com lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- Use a Linux environment.
- Install Rust and Cargo.
- Install pymute with Cargo from crates.io or directly from GitHub.
- Choose pytest, the default runner, or tox.
- For pytest, run tests from the project root so each independent copy tests its local package.
Verdict
pymute provides configurable mutation testing for Python with pytest or tox, plus parallel execution and surviving-mutant reports. Before adopting it, account for the Rust and Cargo requirement, the pytest project layout constraint, and the disk space used by parallel threads.
Questions
How much does pymute cost?
The Free/open-source plan costs nothing.
Which test runners does it support?
It supports pytest and tox, with pytest as the default.
What languages and platforms are supported?
The listed language is Python, and the listed platform is Linux.
How do I install pymute?
Install it with Cargo from crates.io or directly from GitHub. Rust and Cargo are required.
Is pymute open source?
The repository identifies its license as Unlicense.
Who makes pymute?
The GitHub profile identifies Leonard Sasse as the maker.
Facts from pymute's own pages
- Configuration
- Users can restrict mutations by module glob, select tests, choose mutation types, set thread count, and cap the number of mutants. · github.com, 7 Oct 2026
- Distribution
- The README says to install pymute using Cargo from crates.io or directly from GitHub, and requires Rust and Cargo. · github.com, 8 Oct 2026
- How it works
- It creates a temporary directory for each mutant and inserts mutations by manipulating text in Python files rather than operating on the AST. · github.com, 7 Oct 2026
- Installation
- The README says to install pymute with Cargo from crates.io or directly from GitHub, and requires Rust and Cargo. · github.com, 7 Oct 2026
- License
- The repository identifies its license as Unlicense. · github.com, 8 Oct 2026
- Maker
- The Cargo manifest names Leonard Sasse as the author. · github.com, 8 Oct 2026
- Mutation approach
- It creates a temporary directory for each mutant and inserts mutations by editing Python file text rather than operating on the AST. · github.com, 8 Oct 2026
- Mutation types
- Its listed mutation types include math operators, conjunctions, booleans, control flow, comparison operators, and numbers. · github.com, 8 Oct 2026
- Output
- By default, it displays mutants that tests missed, with optional caught and process output levels. · github.com, 8 Oct 2026
- Parallelism
- The --num-threads option controls how many mutants run in parallel, and each thread uses temporary disk space. · github.com, 8 Oct 2026
- Project layout constraint
- With pytest, the project’s tests need to run from the project root in independent copies and test the local copy rather than an installed package. · github.com, 7 Oct 2026
- Purpose
- Pymute is a mutation testing tool for Python and Pytest written in Rust. · github.com, 8 Oct 2026
- Pytest requirement
- With pytest, tests should run from the project root in independent project copies and test the local copy rather than an installed package. · github.com, 8 Oct 2026
- Resource use
- The README notes that each parallel thread needs temporary disk space and may fail if /tmp runs out of space. · github.com, 7 Oct 2026
- Sampling
- The --max-mutants option runs a randomly sampled subset of mutants. · github.com, 8 Oct 2026
- Scoping
- The --modules option filters files using a glob, and files named test_* or ending in *_test.py are automatically excluded. · github.com, 8 Oct 2026
- Test runners
- It supports pytest as the default runner and tox as an alternative. · github.com, 8 Oct 2026
- Test selection
- The --tests option runs selected tests, which the README recommends for quicker iteration on specific modules. · github.com, 8 Oct 2026
- Tox limitation
- Tox sets up a virtual environment and installs the package for each mutant, which the README says is considerably slower. · github.com, 8 Oct 2026
- tox tradeoff
- The README says tox creates a separate virtual environment and installs the package for each mutant, but is considerably slower because environments must be set up. · github.com, 7 Oct 2026
- Version
- The repository Cargo manifest lists version 0.2.1 and author Leonard Sasse. · github.com, 7 Oct 2026
Where pymute stands on Freedom251
- Mutation Testing Tools#18 of 25