#cucumber #自动化 #BDD #TDD

cucumber-trellis

为Cucumber创建测试“trellis”

5个版本

0.1.4 2024年7月5日
0.1.3 2024年6月29日
0.1.2 2024年6月22日
0.1.1 2024年6月21日
0.1.0 2024年6月3日

#145 in 测试

Download history 145/week @ 2024-06-03 6/week @ 2024-06-10 264/week @ 2024-06-17 245/week @ 2024-06-24 116/week @ 2024-07-01 14/week @ 2024-07-08 20/week @ 2024-07-22

298 每月下载量

MIT 许可证

13KB
185

Crates.io Docs.rs CircleCI Coverage Status

Cucumber Trellis

为Cucumber创建测试“trellis”。

您可以为Cucumber创建一个测试套件,每个测试在一个文件中实现,并链接到一个Gherkin特性文件。

每个测试实现了一个CucumberTest特质,并将此测试注册在“trellis”中。

最后,所有测试并行执行,trellis等待所有测试完成。

安装

cargo add cucumber cucumber-trellis

使用方法

首先,通过在您的Cargo.toml中添加以下行允许Cucumber打印输出而不是libtest:

[[test]]
name = "cucumber"
harness = false

然后,将特性文件放在tests/features目录中,并将以下代码放在tests/cucumber.rs中:

mod tests;

fn main() {
    let mut trellis = cucumber_trellis::CucumberTrellis::new(None);

    trellis.add_test::<tests::example::SimpleTest>();

    trellis.run_tests();
}

之后,在tests/tests/example.rs中,实现cucumber_trellis::CucumberTest特质,如下所示:

use cucumber_trellis::CucumberTest;
use cucumber::World;

#[derive(World, Debug)]
pub(in super::super) struct SimpleTest;

impl CucumberTest for SimpleTest {
    const NAME: &'static str = "simple-test";
}

// Implement here, the steps according the file `tests/features/simple-test.feature`
// ...

别忘了文件tests/tests/mod.rs

pub(super) mod example;

最后,运行测试

cargo test --test cucumber

示例

您可以在tests目录中找到一个示例。

您可以使用宏cucumber_trellis::cucumber_test来简化代码。

cucumber_test将为您的函数添加Cucumber测试。该函数将接收一个对CucumberTrellis对象的可变引用

use cucumber_trellis::{CucumberTrellis, cucumber_test};

#[cucumber_test(features="tests/features", executor="futures::executor::block_on", use_tokio)]
fn my_tests(trellis: &mut CucumberTrellis) {
    trellis.add_test::<tests::example::SimpleTest>();
}

目前,宏cucumber_test可以接收以下参数:

  • features:特性文件的路径,例如tests/features
  • executor:执行异步的函数的路径。
  • use_tokio:生成的main函数将使用tokio运行时;Tokio应该添加到dev-dependencies中。

这些参数是可选的,参数 use_tokioexecutor 是互斥的,因为 use_tokio 强制使用 tokio 作为执行器。所以上面的例子无法编译,它只是用来展示用法。

默认执行器是 futures::executor::block_on,因此如果没有在参数中指定执行器,必须在 Cargo.toml 中添加依赖 futures

依赖项

~10–20MB
~283K SLoC