BATS:使变量在所有测试中保持不变
BATS: Make variable persistent across all tests
我正在编写一个 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 在测试之间重新生成。是否有 way/place 供我存储将在所有测试中保留的变量?
将其导出为环境变量。
# 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
}
我正在编写一个 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 在测试之间重新生成。是否有 way/place 供我存储将在所有测试中保留的变量?
将其导出为环境变量。
# 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
}