Skip to content
rpytest GitHub

Home / Quickstart

Up and running in two minutes

Install rpytest, run your existing suite exactly as you run pytest, and prove parity. There is nothing to configure — the warm daemon starts on the first invocation and your config is read where it already lives.

1 · Install

Pick your package manager. Linux and macOS are supported.

pip (recommended)
$ pip install rpytest
Homebrew
$ brew install neul-labs/tap/rpytest
npm
$ npm install -g rpytest
cargo
$ cargo install rpytest rpytest-daemon

The pip package pulls in both the Rust CLI and the daemon binary. Full reference lives in the docs.

2 · Run it like pytest

same commands you already know
# everything you'd pass pytest, you pass rpytest
$ rpytest
$ rpytest tests/test_api.py::test_login -k auth -m "not slow"
$ rpytest --lf            # last-failed, near-instant on the warm daemon
$ rpytest -n auto         # built-in parallel, no xdist
$ rpytest --watch         # TDD loop

Config in pytest.ini, pyproject.toml, tox.ini, and setup.cfg is read in place — nothing to port.

3 · Prove parity, then manage the daemon

verify + daemon lifecycle
$ rpytest --verify-dropin   # diff node IDs, outcomes, exit codes vs pytest
$ rpytest --daemon-status   # is the daemon up?
$ rpytest --daemon-stop     # stop it (e.g. for a clean re-import)
$ rpytest --cleanup         # tidy daemon state

The flags you will actually use

-n auto

Run tests across workers with duration-aware load balancing. Built in — no pytest-xdist install required.

--watch

Re-run affected tests on each file save against the warm daemon. The TDD inner loop, tightened.

--verify-dropin

Run both pytest and rpytest and diff collected node IDs, outcomes, and exit codes. Prove the swap is safe.

--shard 0 --total-shards 4

Split the suite deterministically across CI jobs. Stable and reproducible sharding.

--reruns N / --flaky-report

Retry failing tests and surface quietly unreliable ones without adding a rerun plugin.

--daemon-status / --daemon-stop / --cleanup

Inspect, stop, and clean up the local daemon. There is no remote control plane.

Want the full picture first?