在 Linux 中使用 Bats 测试 Bash 脚本
摘要
广泛使用且有益的脚本语言 bash 有无数的应用。尽管该语言本身被广泛使用,但对其进行测试并不常见。这可能导致代价高昂的错误,并降低对代码的信任度。
在本文中,我们将了解如何在 Linux 中使用 Bats 测试 bash 脚本。
注意 - Linux 命令区分大小写。
什么是 BATS?
Bash 自动化测试系统,有时称为 BATS,是一个测试框架。在发布 bash 程序之前,可以使用此自动化测试过程验证它是否正常运行并达到其设计目标。正如我们将在本文中看到的,BATS 用于对 bash 脚本运行测试,然后提供结果。
BATS 使程序员可以选择使用 bash 脚本和库,并执行类似于 Python 或 Java 程序员使用的自动化测试过程。
如何设置 BATS?
假设您希望从 git 存储库启动您的项目,我们应该首先在终端中安装“git”(如果您尚未安装)。
$ sudo apt update $ sudo apt install git $ git version
输出
$ git version 2.34.1
要设置您的 git 存储库,请创建它或转到项目目录并运行以下命令。之后,通过将所需的存储库克隆为子模块来安装 bats 及其库。
$ git init $ git submodule add https://github.com/bats-core/bats-core.git test/bats $ git submodule add https://github.com/bats-core/bats-assert.git test/test_helper/bats-files $ git submodule add https://github.com/bats-core/bats-support.git test/test_helper/bats-support $ git submodule add https://github.com/bats-core/bats-assert.git test/test_helper/bats-assert
配置您的 Bash 脚本
首先使用以下代码创建一个新的 bash 文件:
$ nano point.sh
#!/usr/bin/env bash choice="Web Browser $1 over $2" echo "$choice";echo "$choice" > $3 exit 0
先前命令的输出显示我们的 bash 脚本接受三个参数,并在终端中输出“choice”变量的值,以及创建一个具有相同输出的文本文件。让我们将我们的程序付诸实践以更好地理解。
script.txt point.sh firefox Bing log23.txt google
输出
Web Browser firefox over Bing
开始测试 Bash 脚本
为了熟悉 BATS,最简单的方法是进行简单的测试。在测试目录中,让我们测试一个名为“tutorial.bats”的新文件,其内容如下:
$ ./test/bats/bin/bats test/tutorial.bats
输出
tutorial.bats ✗ can run our script (in test file test/tutorial.bats, line 2) './pointscript.sh' failed with status 127 /home/etc/my_project/test/tutorial.bats: line 2: ./initproj.sh: No such file or directory 1 test, 1 failure
由于我们没有同名文件,因此测试显然失败了。因此,让我们在 /tst 目录中编写一个基本的 bash 脚本,如下所示:
$ mkdir tst/ $ echo '#!/usr/bin/bash' > initproj.sh $ chmod a+x initproj.sh
执行下面显示的命令以从根目录运行我们之前的测试:
$ ./test/bats/bin/bats test/tutorial.bats
tutorial.bats ✓ can run our script 1 test, 0 failures
结论
在本教程中,我们学习了如何使用各种 bash 组件测试 bash 脚本。我们学习了如何使用 Bats 库测试 Bash 脚本。我们学习了如何编写自己的断言,使用了库提供的断言工具,并创建了简单的测试。
在决定对一个或多个 Bash 脚本或库应用测试规范后,BATS 提供了在其他软件开发环境中看到的广泛测试功能。
希望您发现这些命令示例有用。