NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #760 most downloaded on crates.io
Rust fixture based test framework. It use procedural macro to implement fixtures and table based tests.
Last release 1 months ago
06 Sep 2026
Release timing varies
gaps range from 6 weeks to 1.1 years
Nearly every release is documented
notes for 39 of 39 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
40 releases · first in 2018
Bump msrv to 1.85.0 both for rstest and rstest_reuse
rstest and rstest_reusefutures-util#[values(...)] entries can be used to override the generated matrixarg => [..] syntax and the new attribute form).core import. See #336.mut arguments failing to compile with #[trace]. See #345 thanks to @super-cooper.Fix Docs Full Changelog : v0.26.0...v0.26.1
One column per quarter.
docs: fix filemode examples by @lucascool12 in #301
async-std by @coriolinus in #311Full Changelog: v0.25.0...v0.26.0
#[files(...)] attribute now ignores matched directory paths by default.
See #306 thanks to @Obito-git.#[dirs] attribute, which can be used with #[files(...)] to explicitly include directory paths.
See #306 thanks to @Obito-git.#[test_attr] to define test attribute explicit and also enable the use of
#[macro_rules_attribute::apply(<macro>)]: naw also smol works. See
#303
#311
#315
thanks to @coriolinus.1.89.0-nightlyrstest expansion.
See #313#[files(...)] attribute now works reliably on Windows.Append generated test macro so next test macros are aware of it by @kezhuw in #291
include_str and include_bytes file input behaviour by @lucascool12 in #297Full Changelog: v0.24.0...v0.25.0
#[mode = ...] attribute to be used with the #[files(...)] attribute to change the way
the files get passed to the test.
(see #295 thanks to @lucascool12)refactor: use core instead of std by @rnbguy in #283
Upgrade to async-std v1.13 by @jayvdb in #274
Destructuring input data
Destructuring input data
#[ignore] attribute to ignore test parameters during fixtures resolution/injection. See #228 for detailsUse crate-name feature to enable the crate rename support (enabled by default)
Use crate-name feature to enable the crate rename support (enabled by default)
crate-name enabled by default to opt-in crate rename
support. See #258Introduce #[by_ref] and add support for import rstest with another name.
Introduce #[by_ref] and add support for import rstest with another name.
#[by_ref] attribute to take get a local lifetime for test arguments.
See #241 for more details. Thanks to
@narpfel for suggesting it and useful discussions.rstest with another name. See #221Defined rust-version for each crate (see #227)
Admit parent folders in files glob path
Admit parent folders in files glob path
#[files] accept also parent folders (see #205
for more details).### Fixed - Wrong doc test - Docs
Add support for RSTEST_TIMEOUT environment variable to define a max timeout for each function (see #190 for details). Thanks to @aviramha for idea and
RSTEST_TIMEOUT environment variable to define a max timeout
for each function (see #190 for details).
Thanks to @aviramha for idea and PR#[files("glob path")] attribute to generate tests based on files that
satisfy the given glob path (see #163 for details).syn 2.0 and edition 2021 : minimal Rust version now is 1.56.0
both for rstest and rstest_reuse (see #187)#[awt] function attrs (See
#189)Add #[awt] and #[future(awt)] to .await future input
#[awt] and #[future(awt)] to .await future inputShow TEST START banner only when trace some argument: See #158 for details.
TEST START banner only when trace some argument: See #158 for details.Timeout not compile if one of its test arguments il not a copy type [see #154]
Feature gated async timeout via async-timeout feature [see #148]
async-timeout feature [see #148]async-std build dependency [see #148]Split rstest in separated crates for macro and libs (See #32)
#[timeout(duration)] test implementation for both sync and async tests (See #136)Add #[once] fixture attribute to create static fixtures (See #119)
#[once] fixture attribute to create static fixtures (See #119)use mutable fixture in in cases and value list (See #121)
Rename fixture (See #107 and #108)
#[fixture] with generics types that have transitive
reference (See #116)### Add - #[future] arg attribute to remove impl Future<> boilerplate. (See #98)
#[future] arg attribute to remove impl Future<> boilerplate. (See #98)Magic Conversion: use literal string for define values where type implements FromStr trait (See #111)
FromStr trait (See #111)#[default] arg attribute cannot use key = arbitrary rust expression syntax
(is unstable https://github.com/rust-lang/rust/issues/78835). So we switched
to #[default(expression)] syntax. (See #117)This version intruduce the new more composable syntax. And async fixtures (thanks to @rubdos)
This version intruduce the new more composable syntax. And async fixtures (thanks to @rubdos)
async fixtures (See #86, #96. Thanks to @rubdos).test directory (See #97)Nothing published for this version
Implemented reusable test list with rstest_reuse external crate (See #80)
rstest_reuse external crate (See #80)Define default values instead use trivial fixtures (See #72).
Injecting test attribute. You can choose your own test attribute (should be something like *::test) for each test. This feature enable every async run
*::test)
for each test. This feature enable every async runtime (See #91).rstest to test rstest (On going task #92)Introducing async tests support. Leverage on async_std::test to automatically switch to async test (both for single, cases and matrix) (See #73)
async_std::test to automatically switch to
async test (both for single, cases and matrix) (See #73)Hook argument name to fixture by remove starting _ (See #70)
_ (See #70)case can have a specific set of attributes (See #82)rstest_parametrize and rstest_matrix (See #81). From 0.5.0 you
can use just rstest to create cases and values list.cargo-edit test dependecy (See #61)Fixed a false _unused mut_ warning regression introduced by partial fixtures (See 8a0ff08)
Fixed _unused attribute_ warning when use should_panic attribute (See #79)
should_panic
attribute (See #79)### Fixed - README.md links - License files
README.md links(From rustc 1.40) Deprecated rstest_parametrize and rstest_matrix: rstest now cover all features
rstest for implementing all kind of tests (See #42)README.md that introduce all featuresrstest_parametrize and rstest_matrix:
rstest now cover all featuresFixed README, crate description, changelog dates
Injecting fixture with partial values in all tests (See #48)
rstest_matrix macro to build tests by carthesian product of
input arguments (See #38)unindent crate instead the home made Deindent traititertoolsSupport for arbitrary rust code without use Unwrap(str_lit) trick. See #19 and #20 (deprecate Unwrap())
fixture macro: Now you must annotate your fixture by
this tag. See #5Unwrap(str_lit) trick.
See #19 and #20 (deprecate Unwrap())Result(), See #23rstest_parametrize use module to group cases (See #13)rstest_parametrize can leave comma after last caserstest_parametrize should catch error in input! See #1, #14fixture to tag all your fixtures.### Fixed - Better error handling
### Changed - crate.io categories
First Public release.
First Public release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →