Freedom251 › Property-Based Testing Tools
Proptest

What Proptest is
Proptest is a free property testing framework for Rust, inspired by Python’s Hypothesis framework. It generates values through strategies and simplifies failing inputs toward a smaller case that reproduces the problem. Strategies are defined per value, supporting flexible composition, and the framework includes a substantial strategy library. It can persist failing cases for replay in later test runs and supports state-machine testing for systems such as database APIs and client-server interactions. Optional fork and timeout features run cases in subprocesses and restrict their execution time. A passing test requires 256 successful cases by default. Proptest is feature-complete and maintained mainly on a passive, volunteer basis; its minimum supported Rust version is 1.88. Partial no_std support requires a nightly compiler with alloc or std for memory allocation and lacks failure persistence, forking and regex-dependent features. WebAssembly compilation is highly experimental and has had little substantial testing; i128 and u128 numeric strategies are unavailable there. The repository contains Apache-2.0 and MIT licenses.
Who it suits
Proptest suits Rust developers who want generated property tests, minimized failure cases or state-machine testing. Its no_std and WebAssembly caveats matter for projects targeting those environments.
What it does well
- Automatically minimizes failing test cases.
- Persists failures for replay in later runs.
- Supports state-machine testing.
- Includes optional subprocess forking and timeouts.
- Available under Apache-2.0 and MIT licenses.
What to know first
- Maintained mainly through passive volunteer maintenance.
- Partial no_std support requires a nightly compiler.
- WebAssembly support is highly experimental.
- WebAssembly lacks i128 and u128 numeric strategies.
Verdict
Proptest provides property-based testing, failure shrinking and state-machine support for Rust at no cost. Its maintenance model and experimental or partial support for some targets are worth weighing before adoption.
Questions
Is Proptest free?
Yes. Proptest uses a free pricing model with a free plan.
Which language does Proptest support?
Proptest supports Rust and works with Rust’s test harness and TestRunner.
What Rust version is required?
The current minimum supported Rust version is 1.88.
Does Proptest support stateful testing?
Yes. It supports state-machine testing, including for database APIs and client-server interactions.
What happens to failing test cases?
Failing cases can be persisted under a proptest-regressions directory and replayed in later test runs.
What licenses are included?
The repository contains Apache-2.0 and MIT licenses.
Facts from Proptest's own pages
- Default test count
- The default number of successful test cases required for a test to pass is 256. · proptest-rs.github.io, 1 Oct 2026
- Failure minimization
- When a failure is found, Proptest automatically finds a minimal test case that reproduces it. · proptest-rs.github.io, 1 Oct 2026
- Failure persistence
- Failing cases are persisted under a proptest-regressions directory and replayed in later test runs. · proptest-rs.github.io, 1 Oct 2026
- Forking and timeouts
- Optional fork and timeout features run test cases in subprocesses and limit their execution time. · proptest-rs.github.io, 1 Oct 2026
- Generation model
- Generation and shrinking are defined per value rather than per type, which enables flexible composition. · proptest-rs.github.io, 1 Oct 2026
- Input generation
- Generation and shrinking are defined per value rather than per type. · proptest-rs.github.io, 1 Oct 2026
- Licensing
- The repository contains Apache-2.0 and MIT licenses. · github.com, 1 Oct 2026
- Maintenance model
- Proptest is maintained on a volunteer basis. · github.com, 1 Oct 2026
- Maintenance status
- The crate is feature-complete and mainly receives passive maintenance. · proptest-rs.github.io, 1 Oct 2026
- Minimal cases
- When a failure is found, Proptest automatically finds the minimal test case that reproduces it. · proptest-rs.github.io, 1 Oct 2026
- no_std limitations
- The no_std build does not provide failure persistence, forking, or features depending on crates such as regex. · proptest-rs.github.io, 1 Oct 2026
- No-std limits
- Failure persistence, forking, and regex support are unavailable in the no_std build. · proptest-rs.github.io, 1 Oct 2026
- no_std support
- Proptest has partial no_std support and requires a nightly compiler with alloc or std for memory allocation. · proptest-rs.github.io, 1 Oct 2026
- Purpose
- Proptest is a property testing framework for Rust inspired by Python’s Hypothesis framework. · proptest-rs.github.io, 1 Oct 2026
- Rust version
- The current minimum supported Rust version is 1.88. · github.com, 1 Oct 2026
- State-machine testing
- Proptest supports state-machine testing for systems such as database APIs and client-server interactions. · proptest-rs.github.io, 1 Oct 2026
- Strategies
- A strategy generates random values and shrinks them into simpler forms, and Proptest ships with a substantial strategy library. · proptest-rs.github.io, 1 Oct 2026
- Support
- Bug reports and questions are welcome through the project repository, and contributors are asked to include Rust version, Proptest version, and relevant operating-system details. · github.com, 1 Oct 2026
- WebAssembly
- Proptest can compile for WebAssembly targets, but this support is highly experimental and has had little substantial testing. · proptest-rs.github.io, 1 Oct 2026
- WebAssembly limits
- On WebAssembly targets, numeric strategies for i128 and u128 are unavailable. · proptest-rs.github.io, 1 Oct 2026
Where Proptest stands on Freedom251
- Property-Based Testing Tools#19 of 28