gpt4 book ai didi

rust - 忽略基于环境变量的测试

转载 作者:行者123 更新时间:2023-12-05 02:26:29 24 4
gpt4 key购买 nike

有一些测试在本地运行,但不在 Github 工作流上运行。我花了很多时间但无法调试和修复它们。现在,我想在 ci/cd 上忽略它们,但在本地运行它们。因为,Github 提供了一个方便的环境变量 CI,它始终保持为真,我可以用它来忽略测试吗?

我不想将整个函数代码包装在 if(env::var("CI").is_ok()) 下。有没有更好的办法?

最佳答案

您可以这样做的一种方法是向您的 Cargo.toml 文件添加一个功能,例如 ci 或类似的东西。然后让您的 GitHub 操作在启用该功能的情况下进行编译,并在相关测试上具有条件编译属性。

为此,您首先要在 Cargo.toml 文件中添加一个新功能:

[features]
ci = []

然后在测试的 Rust 代码中,您可以编写如下内容:

#[test]
#[cfg_attr(feature = "ci", ignore)]
fn test_some_code() {
println!("This is a test");
}

现在,如果您在本地运行 cargo test,您将看到测试运行,但如果您运行 cargo test --features ci,您将看到测试显示 忽略,如下所示:

enter image description here

现在您只需更改 GitHub 操作即可使用此功能进行编译。如果您的操作看起来像这样:

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose

然后将 --features ci 添加到 cargo build 和 cargo test 命令的末尾。

有关条件编译的更多信息,请参阅 Rust 书中的内容:https://doc.rust-lang.org/reference/conditional-compilation.html

有关 Cargo 功能的更多信息,请参阅 Cargo 书籍:https://doc.rust-lang.org/cargo/reference/features.html

关于rust - 忽略基于环境变量的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73760692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com