Comparison

DeltaTest vs every pytest
test-impact plugin

A detailed breakdown of every tool in the pytest ecosystem that does test selection — mechanism, precision, features, and maturity.

Last updated July 2026 · Sources: PyPI, GitHub, official pytest plugin list

Overall score out of 20

At a glance

Scored across 20 criteria: selection mechanism, precision, subprocess coverage, CI integration, dashboard, team sync, VS Code extension, and more.

pytest-deltatest
19  / 20
pytest-testmon
12  / 20
pytest-tia
11  / 20
pytest-cagoule
8  / 20
pytest-changed
7  / 20
pytest-picked
6  / 20
Feature matrix

Side-by-side comparison

✓ = yes   ✗ = no   ~ = partial

Feature pytest-deltatest pytest-testmon pytest-tia pytest-cagoule pytest-changed pytest-picked
Maturity & Ecosystem
Actively maintained ✓ ✓ ✗ ✗ ✓ ✓
Python 3.12+ support ✓ ✓ ✓ ✓ ✓ ✓
On official pytest plugin list ~Submission pending ✓ ✗ ✗ ✓ ✓
Selection Mechanism
Runtime coverage mappingSees what actually runs, not what imports ✓ ✓ ✓ ✗AST + dep graph, no coverage ✗git diff only ✗git diff only
Subprocess coverageCovers child processes launched during tests ✓ ✗ ✗ ✗ ✗ ✗
Line-level precisionMap individual lines, not just files/modules ✓ ✓ ~Module-level ✗ ✗ ✗
Git-aware selection ✓ ~File-based only ✓ ✗ ✓ ✓
Team & CI Features
Cloud mapping syncShare coverage maps across machines ✓ ✗ ✗ ✗ ✗ ✗
Web dashboard ✓ ✗ ✗ ✗ ✗ ✗
VS Code extension ✓ ✗ ✗ ✗ ✗ ✗
Pre-commit hook support ✓ ~ ✗ ✗ ✗ ✗
Tox integration ✓ ✓ ✗ ✗ ✗ ✗
GitHub App / CI integration ✓ ✗ ✗ ✗ ✗ ✗
Free tier available ✓ ✓ ✓ ✓ ✓ ✓
Tool deep-dives

What each tool actually does

Understanding the mechanism determines the precision.

pytest-testmon

Coverage-based Active

Uses .coverage data to map tests to source files. Stores mapping in a local SQLite DB. Very mature and widely used. Doesn't support subprocess coverage or cloud sync — the mapping lives per-machine.

pytest-tia

Coverage-based Unmaintained

Similar coverage-based approach to testmon but at module level. Last commit was years ago. Python 3.12 compatibility is uncertain. Not suitable for new projects.

pytest-cagoule

AST analysis Unmaintained

Builds a static dependency graph using AST parsing — not runtime coverage. This means it can miss dynamic dependencies and false-negative on tests that should run. Also unmaintained.

pytest-changed

Git diff Active

Runs tests in files that match git-changed filenames. Simple heuristic — no coverage mapping. Can miss tests in unchanged files that import changed modules.

pytest-picked

Git diff Active

Runs unstaged/staged test files from git status. Very simple but only useful when the test files themselves change — not when source code changes.

pytest-deltatest

Runtime coverage Active

Maps coverage at the line level including subprocesses, syncs maps via the cloud so your whole team benefits from each other's runs. Comes with a VS Code extension, web dashboard, and CI integration.

Verdict

The bottom line

19
/ 20

The only complete product. Line-level precision, subprocess coverage, VS Code extension, web dashboard, team sync, pre-commit hook, tox support — and the only tool that covers child processes. Built for teams, not just individuals.

Ready to run the 3% that matters?

Join teams that cut CI time by 90% — in one pip install.

Start free Read the docs