PIT vs pymute
PIT
pitest.orgpymute
github.comSide by side
| Figure | PIT | 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.0 (#20) | 7.7 (#9) |
| Distribution | PIT releases are available through GitHub and its binaries are available on Maven Central. | The README says to install pymute using Cargo from crates.io or directly from GitHub, and requires Rust and Cargo. |
| Maker | The About page identifies Henry Coles, a software developer based in Edinburgh, as the principal author and says PIT has also received contributions from others. | The Cargo manifest names Leonard Sasse as the author. |
| Purpose | PIT runs unit tests against automatically modified versions of application code to measure whether tests detect faults. | Pymute is a mutation testing tool for Python and Pytest written in Rust. |
| Test selection | PIT uses line coverage, test execution speed, and test naming conventions to select and prioritize tests for mutations. | The --tests option runs selected tests, which the README recommends for quicker iteration on specific modules. |
Plans
In their own words
PIT
PIT is a free mutation-testing tool for Java and JVM bytecode projects. It measures whether unit tests detect faults by running them against modified versions of application code. Configurable bytecode mutations can remove method calls, invert logic, or change return values. PIT selects and prioritizes tests using line coverage, execution speed, and naming conventions, then reports mutation coverage alongside line coverage. It can run from the command line, Ant, or Maven; third-party integrations are listed for Gradle, Eclipse, and IntelliJ. Java is supported directly, and Kotlin use is available through the ArcMutate plugin. PIT supports JUnit 3, JUnit 4, and TestNG; JUnit 5 needs a plugin. Versions 1.4.0 and later require Java 8 or above and JUnit or TestNG on the classpath. Mutation runs can take a long time depending on codebase size and test-suite speed, so PIT recommends focusing on changed code. It mutates bytecode and requires line numbers and source file names in that bytecode.
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.