Rustest is a Rust-powered pytest-compatible test runner delivering 8.5× average speedup with familiar pytest syntax and zero setup.
📚 Full Documentation | Getting Started | Migration Guide
🚀 Try It Now
Run your existing pytest tests with rustest — no code changes required:
pip install rustest
rustest --pytest-compat tests/
See the speedup immediately, then migrate to native rustest for full features.
Why Rustest?
- 🚀 8.5× average speedup over pytest (up to 19× on large suites)
- 🧪 pytest-compatible — Run existing tests with
--pytest-compat - ✅ Familiar API — Same
@fixture,@parametrize,@markdecorators - 🔄 Built-in async & mocking — No pytest-asyncio or pytest-mock plugins needed
- 🐛 Clear error messages — Vitest-style output with Expected/Received diffs
- 🤖 LLM-friendly output —
--llmemits deterministic JSONL for coding agents (Claude Code, Cursor, Copilot) - 📝 Markdown testing — Test code blocks in documentation
- 🛠️ Rich fixtures —
tmp_path,monkeypatch,mocker,capsys,caplog,cache, and more
Performance
Rustest delivers consistent speedups across test suites of all sizes:
| Test Count | pytest | rustest | Speedup |
|---|---|---|---|
| 20 | 0.45s | 0.12s | 3.8× |
| 500 | 1.21s | 0.15s | 8.3× |
| 5,000 | 7.81s | 0.40s | 19.4× |
Expected speedups: 3-4× for small suites, 5-8× for medium suites, 11-19× for large suites.
Installation
pip install rustest
# or
uv add rustest
Python 3.10-3.14 supported. 📖 Installation Guide →
Quick Start
Write a test in test_example.py:
from rustest import fixture, parametrize, mark, raises
@fixture
def numbers():
return [1, 2, 3, 4, 5]
def test_sum(numbers):
assert sum(numbers) == 15
@parametrize("value,expected", [(2, 4), (3, 9)])
def test_square(value, expected):
assert value ** 2 == expected
@mark.asyncio
async def test_async():
result = 42
assert result == 42
def test_exception():
with raises(ZeroDivisionError):
1 / 0
Run your tests:
rustest # Run all tests
rustest tests/ # Run specific directory
rustest -k "test_sum" # Filter by name
rustest -m "slow" # Filter by mark
rustest --lf # Rerun last failed
rustest -x # Exit on first failure
rustest --llm # JSONL output for LLM coding agents
Learn More
- Getting Started — Complete quickstart guide
- Migration from pytest — 5-minute migration guide
- User Guide — Fixtures, parametrization, marks, assertions
- API Reference — Complete API documentation
Contributing
Contributions welcome! See the Development Guide for setup instructions.
License
MIT License. See LICENSE for details.
Metadata
Release files for rustest 0.18.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rustest-0.18.0.tar.gz | 460.9 kB | Without provenance | Details |
Built distributions (wheels)
Total release size: 14.8 MB
Release files / rustest-0.18.0.tar.gz
| Download URL | rustest-0.18.0.tar.gz |
|---|---|
| Size | 460.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea75da1122a738707f84e20c8ecb2f490c2addcfdce90ef1eec3aab05eba46f0
|
|
BLAKE2b-256 checksum How to use checksums |
26e7ac126164fc6016f524a27a6e8a4139b7c1dbd34f4ede61e586c7bc744251
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp313-cp313-win_amd64.whl
| Download URL | rustest-0.18.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e26598091ffaf4fefc6e1dba9b7d8d3ecebe0e31fdfea97668cd3602607eee33
|
|
BLAKE2b-256 checksum How to use checksums |
466ff2ce165e274e5b9790b8535da563d0c8c0b983fe8668046da21cddd457cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | rustest-0.18.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
50d63b8bcf5a7c1c3bacada06823bc5dd8684201667dbe1066cbda8cc3ed78cc
|
|
BLAKE2b-256 checksum How to use checksums |
9082164c0cd09173f304edf14ccfe7fd95845f58520d4189202be333e7dc1985
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | rustest-0.18.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d0c69e29fd19011ba99538a4e3288f513e4c5179d5ecf13ddc214d841367a9c1
|
|
BLAKE2b-256 checksum How to use checksums |
fbd89c36b6a62e7df5a2644d4aa759741c237efae691140574af04b83a0d917e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp312-cp312-win_amd64.whl
| Download URL | rustest-0.18.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8adf8c12d563ff0b8f324c8fd8df2656b8cddcd3c243036bf8c38abcfb0699e2
|
|
BLAKE2b-256 checksum How to use checksums |
b289eee7236856cbca8f3784f9dce67a461a3063effd76e833a47d46cdbbb222
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | rustest-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
31599918c01687ae0f05f48ac13f59e3bc84046578e5f6aaa3f4c1e4fe4eb679
|
|
BLAKE2b-256 checksum How to use checksums |
e9eda85cc4ad4be421f19ae1c77fae2b13216072b2572ab65501ab4b5aa1dafb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | rustest-0.18.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
434f0889daca524da5275b507d52dfd4c64847d45f11d25beef2394e7044610b
|
|
BLAKE2b-256 checksum How to use checksums |
7d91a88db7a7c3ae656ad7a159009e47e70e773c40b89b28090beffd10859369
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp311-cp311-win_amd64.whl
| Download URL | rustest-0.18.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
829474488a002cb54c5f3feeb0b9a6ce0b70e8a2f49a4581c0196289695c97f7
|
|
BLAKE2b-256 checksum How to use checksums |
9c0634fa9f41df85ba0a0bea82c8856be37b56a748cd0240bcfc7e91901f91db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | rustest-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
9dd7ac8eaad277544014d9d121fc879d99459b78c019d5d7a0344515d0e52a90
|
|
BLAKE2b-256 checksum How to use checksums |
7ef8b2c501072560639d4fa239f5a99fc8151c0837f26cf36860e3518b73d468
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | rustest-0.18.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
41e29fcc2357bb6524f5b3af6986572805c1cfc1d065cd2322dcb258f737942d
|
|
BLAKE2b-256 checksum How to use checksums |
84fec0fdbb9b13adc1cf6df3c9990922070743672903f3ae5accc7f3891c0161
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp310-cp310-win_amd64.whl
| Download URL | rustest-0.18.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f782278cc7360f415f4d663c377a6ccd3fe8b37e5a0ba6c1e5aae381ff386f8b
|
|
BLAKE2b-256 checksum How to use checksums |
1662759eef6499cfbebca82025f27dbfd2c1e9774412e21b0581b2089b21a064
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | rustest-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d213fcd96373f882389e94d9a627b620ba5f513129a582d23761868c455a30f4
|
|
BLAKE2b-256 checksum How to use checksums |
ded2780be72144d6cfd6af9005ba391ab65ad1cfcf1a96cf7b6856d027fde154
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rustest-0.18.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | rustest-0.18.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5f0b78341dc15e446974a87f59ba4e5db6113fcc741dfe8034aa536a6ef9bd1b
|
|
BLAKE2b-256 checksum How to use checksums |
bc47e1e285836d48fb0bae8bb9f768aeb7001450a0e2e3deb2e8c8331ae90f7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for rustest 0.18.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.