gpt4 book ai didi

bats-core - 有没有办法从 bat 测试中保释出来?

转载 作者:行者123 更新时间:2023-12-05 04:06:17 26 4
gpt4 key购买 nike

有没有办法摆脱整个测试文件?整个测试套件?

类似的东西

@test 'dependent pgm unzip' {
command -v unzip || BAIL 'missing dependency unzip, bailing out'
}

编辑:

我可以做类似的事情

#!/usr/bin/env bats

if [[ -z "$(type -t unzip)" ]]; then
echo "Missing dep unzip"
exit 1
fi

@test ...

这对于在测试开始时运行的检查来说效果很好,只是它不会作为报告的一部分输出。

但是,如果我想确定源脚本是否正确定义了一个函数,如果没有,则放弃,添加这种测试可以防止生成任何类型的报告。不显示成功的测试。

最佳答案

长话短说

  • 要查看中止消息,请使用 >&2 将全局范围内的消息重定向到 stderr
  • 要在失败后中止所有 文件,请在全局范围内使用exit 1
  • 要仅中止单个文件,请创建一个 setup 函数,该函数使用 skip 仅中止该文件中的测试。
  • 要使单个文件中的测试失败,请创建一个 setup 函数,该函数使用 return 1 使该文件中的测试失败。

更详细的答案

中止所有文件

你的第二个例子差不多了。诀窍是将输出重定向到 stderr 1 .

从全局范围使用exitreturn 1 将停止整个测试套件。

#!/usr/bin/env bats

if [[ -z "$(type -t unzip)" ]]; then
echo "Missing dep unzip" >&2
return 1
fi

@test ...

缺点是中止文件中和之后的任何测试都将不会运行,即使这些测试通过了也是如此。

中止单个文件

一个更细粒度的解决方案是添加一个setup 2 跳过 的函数 3 如果依赖项不存在。

因为 setup 函数在它定义的文件中的每个测试之前被调用,如果缺少依赖项,将跳过该文件中的所有测试。

#!/usr/bin/env bats

setup(){
if [[ -z "$(type -t unzip)" ]]; then
skip "Missing dep unzip"
fi
}

@test ...

失败而不是跳过

也有可能失败 具有未满足的依赖关系的测试。使用 return 1来自测试的 setup 函数将使该文件中的所有测试失败:

#!/usr/bin/env bats

setup(){
if [[ -z "$(type -t unzip)" ]]; then
echo "Missing dep unzip"
return 1
fi
}

@test ...

由于消息输出不在全局范围内,因此不必将其重定向到 sdterr(尽管这也可以)。

脚注

  1. the page about Bats-Evaluation-Process in the wiki 的底部提到了这一点在手册中(如果你运行 man 7 bats):

     CODE OUTSIDE OF TEST CASES

    You can include code in your test file outside of @test functions.
    For example, this may be useful if you want to check for
    dependencies and fail immediately if they´re not present. However,
    any output that you print in code outside of @test, setup or teardown
    functions must be redirected to stderr (>&2). Otherwise, the output
    may cause Bats to fail by polluting the TAP stream on stdout.
  2. 有关设置的详细信息,请参阅 https://github.com/bats-core/bats-core#setup-and-teardown-pre--and-post-test-hooks

  3. 有关skip 的详细信息,请参阅https://github.com/bats-core/bats-core#skip-easily-skip-tests

关于bats-core - 有没有办法从 bat 测试中保释出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49991275/

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