pytest
clone for Rustrstest
use procedural macro to implement simple fixtures and table based tests.
To use it you need at least 1.30 toolchain (beta channel till 2018-10-25)
and add follow lines to your Cargo.toml
file:
[dev-dependencies]
rstest = "0.2"
The core idea is that every input arguments of your test function will
be resolved by call a function with the same name. You can also use
mut
argument or generic types.
Example:
```rust
extern crate rstest;
use rstest::rstest;
pub fn fixture() -> u32 { 42 }
fn shouldsuccess(fixture: u32) { asserteq!(fixture, 42); }
fn shouldfail(fixture: u32) { assertne!(fixture, 42); } ```
Moreover you can use rstest_parametrize
attribute to implement table
based tests. An example is the best way to explain it
```rust
extern crate rstest;
use rstest::rstest_parametrize;
expected, input, case(4, "ciao"), case(3, "Foo") )] fn strlentest(expected: usize, input: &str) { asserteq!(expected, input.len()); } ```
You can find more examples in resources
directory and in rs8080
that use this module intensely.
Licensed under either of
Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.