rstest 0.4.0

A simple `pytest` clone for Rust. It use procedural macro to implement fixtures and table based tests.
Documentation

Crate Docs Apache 2.0 Licensed MIT Licensed Rust 1.32+

Rust fixture based test framework

rstest use procedural macro to implement simple fixtures and table based tests. To use it add follow lines to your Cargo.toml file:

[dev-dependencies]
rstest = "0.4"

The core idea is that every input arguments of your test function will be resolved by call a function with the same name. Example:

use rstest::rstest;

pub fn fixture() -> u32 { 42 }

#[rstest]
fn should_success(fixture: u32) {
    assert_eq!(fixture, 42);
}

#[rstest]
fn should_fail(fixture: u32) {
    assert_ne!(fixture, 42);
}

Moreover you can use rstest_parametrize macro to implement table based tests: you must indicate the arguments tha you want use in your cases and provide them for each case you want to test.

rstest_parametrize generates an independent test for each case.

# use rstest::rstest_parametrize;
#[rstest_parametrize(input, expected,
    case(0, 0),
    case(1, 1),
    case(2, 1),
    case(3, 2),
    case(4, 3)
)]
fn fibonacci_test(input: u32, expected: u32) {
    assert_eq!(expected, fibonacci(input))
}

Running cargo test in this case executes five tests:

running 5 tests
test fibonacci_test::case_1 ... ok
test fibonacci_test::case_2 ... ok
test fibonacci_test::case_3 ... ok
test fibonacci_test::case_4 ... ok
test fibonacci_test::case_5 ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

You can learn more on Docs and find more examples in resources directory and in rs8080 that use this module intensely.

License

Licensed under either of