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_regex
crate 支持扩展正则表达式,包括前瞻和后顾。
如果有多个数据驱动测试集需要运行,可以重复这三个参数: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