| Crates.io | paramtest |
| lib.rs | paramtest |
| version | 0.1.2 |
| created_at | 2025-06-27 21:44:33.635106+00 |
| updated_at | 2025-06-29 21:13:24.921264+00 |
| description | A library for testing parameterized functions |
| homepage | https://github.com/simonhdickson/paramtest |
| repository | https://github.com/simonhdickson/paramtest |
| max_upload_size | |
| id | 1729337 |
| size | 9,462 |
With paramtest, you can define multiple sets of input values for a single test function, and each set will be run as a separate test case.
Here's how you can use paramtest in your tests:
use paramtest::paramtest;
#[paramtest(
one=(1, 2),
two=(2, 3),
hundred=(100, 101),
)]
fn add_one(input: u64, output: u64) {
assert_eq!(output, input + 1)
}
This is effectively the same as writing the following:
#[test]
fn add_one_one() {
add_on(1, 2);
}
#[test]
fn add_one_two() {
add_on(2, 3);
}
#[test]
fn add_one_hundred() {
add_on(100, 101);
}
fn add_one(input: u64, output: u64) {
assert_eq!(output, input + 1)
}
Each #[paramtest(...)] attribute defines named test cases with their own arguments. The macro will generate a separate test for each case, making your tests concise and easy to maintain.
Tokio support is enabled by default. If you want to disable it, you can add the tokio feature to your Cargo.toml:
[dependencies]
paramtest = { path = "../proc", features = ["tokio"] }
tokio = { version = "1.45.1", features = ["macros", "rt"] }
And use the #[tokio_paramtest] attribute for your test functions:
#[tokio_paramtest(
one=(1, 2),
two=(2, 3),
hundred=(100, 101),
)]
async fn add_one(input: u64, output: u64) {
assert_eq!(output, input + 1)
}
paramtest crate as a dependency in your Cargo.toml.#[paramtest(...)] and provide named cases with argument tuples.MIT