13 个版本
| 0.2.9 | 2024 年 4 月 26 日 |
|---|---|
| 0.2.8 | 2024 年 4 月 25 日 |
| 0.2.3 | 2023 年 8 月 29 日 |
| 0.1.3 | 2022 年 8 月 15 日 |
| 0.1.1 | 2021 年 4 月 17 日 |
#32 in 测试
32,483 个月下载量
在 29 crates 中使用
32KB
478 行
datatest-stable
datatest-stable 是一个测试框架,旨在编写 文件驱动 或 数据驱动 测试,其中单个测试案例被指定为文件而不是代码。
给定
- 一个接受路径,并可选内容作为输入的测试
my_test - 一个查找文件的目录
- 匹配文件的模式
datatest-stable 将为目录中的每个匹配文件调用 my_test 函数。
datatest-stable 与 cargo nextest 兼容,并且是 GitHub 上的 nextest-rs 组织 的一部分。
用法
- 通过在
Cargo.toml中设置harness = false来配置测试目标
[[test]]
name = "<test target name>"
harness = false
- 使用以下参数调用
datatest_stable::harness!(testfn, root, pattern)宏
testfn- 在每个匹配输入上执行的测试函数。此函数可以是以下之一fn(&Path) -> datatest_stable::Result<()>fn(&Utf8Path) -> datatest_stable::Result<()>(Utf8Path是camino库的一部分,此处为了方便而重导出。)fn(&P, String) -> datatest_stable::Result<()>其中P是Path或Utf8Path。如果指定了额外的String参数,则将加载文件内容并将其作为字符串传递(如果失败,则出错)。fn(&P, Vec<u8>) -> datatest_stable::Result<()>其中P是Path或Utf8Path。如果指定了额外的Vec<u8>参数,则将加载文件内容并将其作为Vec<u8>传递(如果失败,则出错)。
root- 存放输入文件(测试用例)的根目录的路径。此路径相对于 crate 的根目录(存放 crate 的Cargo.toml的目录)。pattern- 用于匹配并选择每个要测试的文件的正则表达式。通过fancy_regexcrate 支持扩展正则表达式,包括前瞻和后顾。
如果有多个数据驱动测试集需要运行,可以重复这三个参数:datatest_stable::harness!(testfn1, root1, pattern1, testfn2, root2, pattern2)。
示例
这是一个示例测试。请使用 harness = false。
use datatest_stable::Utf8Path;
use std::path::Path;
fn my_test(path: &Path) -> datatest_stable::Result<()> {
// ... write test here
Ok(())
}
fn my_test_utf8(path: &Utf8Path, contents: String) -> datatest_stable::Result<()> {
// ... write test here
Ok(())
}
datatest_stable::harness!(
my_test, "path/to/fixtures", r"^.*/*",
my_test_utf8, "path/to/fixtures", r"^.*/*",
);
最低支持的 Rust 版本(MSRV)
最低支持的 Rust 版本是 Rust 1.66。MSRV 升级可能伴随着次要版本更新;在任何时候,都支持至少过去 6 个月内的 Rust 版本。
另请参阅
许可证
本项目可在 Apache 2.0 许可证 或 MIT 许可证 的条款下使用。
依赖项
~4–13MB
~139K SLoC