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 测试

Download history 6572/week @ 2024-04-23 6850/week @ 2024-04-30 6034/week @ 2024-05-07 7092/week @ 2024-05-14 6344/week @ 2024-05-21 6723/week @ 2024-05-28 5694/week @ 2024-06-04 7785/week @ 2024-06-11 7761/week @ 2024-06-18 8481/week @ 2024-06-25 5692/week @ 2024-07-02 8639/week @ 2024-07-09 7845/week @ 2024-07-16 7225/week @ 2024-07-23 7552/week @ 2024-07-30 8355/week @ 2024-08-06

32,483 个月下载量
29 crates 中使用

MIT/Apache

32KB
478

datatest-stable

datatest-stable on crates.io Documentation (latest release) Documentation (main) License License

datatest-stable 是一个测试框架,旨在编写 文件驱动数据驱动 测试,其中单个测试案例被指定为文件而不是代码。

给定

  • 一个接受路径,并可选内容作为输入的测试 my_test
  • 一个查找文件的目录
  • 匹配文件的模式

datatest-stable 将为目录中的每个匹配文件调用 my_test 函数。

datatest-stablecargo nextest 兼容,并且是 GitHub 上的 nextest-rs 组织 的一部分。

用法

  1. 通过在 Cargo.toml 中设置 harness = false 来配置测试目标
[[test]]
name = "<test target name>"
harness = false
  1. 使用以下参数调用 datatest_stable::harness!(testfn, root, pattern)
  • testfn - 在每个匹配输入上执行的测试函数。此函数可以是以下之一
    • fn(&Path) -> datatest_stable::Result<()>
    • fn(&Utf8Path) -> datatest_stable::Result<()>Utf8Pathcamino 库的一部分,此处为了方便而重导出。)
    • fn(&P, String) -> datatest_stable::Result<()> 其中 PPathUtf8Path。如果指定了额外的 String 参数,则将加载文件内容并将其作为字符串传递(如果失败,则出错)。
    • fn(&P, Vec<u8>) -> datatest_stable::Result<()> 其中 PPathUtf8Path。如果指定了额外的 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