gpt4 book ai didi

bash - bat : Make variable persistent across all tests

转载 作者:行者123 更新时间:2023-11-29 09:05:26 27 4
gpt4 key购买 nike

我正在写一个 BATS (Bash 自动测试系统)脚本和我想要的是在所有测试中保留的变量。例如:

#!/usr/bin/env bats

# Generate random port number
port_num=$(shuf -i 2000-65000 -n 1)

@test "Test number one" {
a = $port_num
}

@test "Test number two" {
b = $port_num
}

评估时,a 和 b 应该相等。但是,这不起作用,因为(根据文档)在每次测试运行后都会评估整个文件。这意味着 $port_num 在测试之间重新生成。有没有办法/地方让我存储将在所有测试中持久存在的变量?

最佳答案

将其导出为环境变量。

# If ENV Var $port_num doesn't exist, set it.
if [ -z "$port_num" ]; then
export port_num=$(shuf -i 2000-65000 -n 1)
fi

BATS 中,您必须调用 load 来加载文件。

将上述代码放入您正在执行的目录中名为 port.bash 的文件中。

然后在你的函数之前,调用load port。这将设置您的 $port_num 一次,并且不会更改它。

load port

@test "Test number one" {
a = $port_num
}

@test "Test number two" {
b = $port_num
}

关于bash - bat : Make variable persistent across all tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31332984/

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