问题标签 [bats-core]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
112 浏览

bash - 从命令行使用 sqlite 中的保存点

我正在使用 bash 脚本(特别是bats)来测试我编写的一些代码。

因为我想避免干扰测试,所以我正在使用设置和拆卸功能(bats 提供),如下所示:

不幸的是,回滚时,我得到:

但是,如果我在 SQLite 中启动一个交互式会话,我可以按照我的预期使用保存点。我想这意味着命令行程序退出后所有保存点都被遗忘了。

有没有办法解决这个问题?

0 投票
2 回答
337 浏览

bash - 您如何以编程方式添加蝙蝠测试?

我想为目录中的每个文件创建一个BATS测试,但我不确定完成这项工作的最佳方法是什么。即使目录中有很多文件,下面的方法也只会创建一个测试。

0 投票
1 回答
1571 浏览

bash - BATS:使变量在所有测试中保持不变

我正在编写一个BATS(Bash 自动测试系统)脚本,我想要一个在所有测试中持久化的变量。例如:

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

0 投票
2 回答
1606 浏览

bash - Shell 脚本单元测试:如何模拟复杂的实用程序

我正在对一些遗留的shell 脚本进行单元测试。

在现实世界中,脚本通常用于调用实用程序,如findtarcpiogrepsed、等rsyncdate其中包含一些包含很多选项的相当复杂的命令行。有时会构造和使用正则表达式或通配符模式。

一个例子:通常由 cron 定期调用的 shell 脚本的任务是使用实用程序rsync将一些巨大的目录树从一台计算机镜像到另一台计算机。应该从镜像过程中排除几种类型的文件和目录:

正如 Michael Feathers 在他著名的著作《有效地使用遗留代码》中所写,一个好的单元测试运行速度非常快,并且不会触及网络、文件系统或打开任何数据库。

按照 Michael Feathers 的建议,这里使用的技术是:依赖注入。这里要替换的对象是实用程序rsync

我的第一个想法:在我的 shell 脚本测试框架(我使用bats)中,我$PATH以找到模型 rsync而不是真正的rsync实用程序的方式进行操作。这个模型对象可以检查提供的命令行参数和选项。与被测脚本的这一部分中使用的其他实用程序类似。

我过去在脚本编写领域遇到的实际问题通常是由文件或目录名称中的特殊字符、引用或编码问题、缺少 ssh 密钥、错误权限等引起的错误。这种类型的错误将逃脱这种单元测试技术。(我知道:对于其中一些问题,单元测试根本无法解决问题)。

另一个缺点是为像or这样的复杂实用程序编写模型容易出错,并且本身就是一项繁琐的工程任务。rsyncfind

我相信上面描述的情况很普遍,其他人可能也遇到过类似的问题。谁有一些聪明的想法并愿意在这里与我分享?

0 投票
1 回答
2207 浏览

bash - 如何在 Bash 测试中使用 `bats-mock` 断言反对对模拟脚本的调用

我正在尝试使用bats在我正在处理的项目中测试一些关键的 shell 脚本。我希望能够模拟脚本,以断言脚本在给定情况下使用正确的参数调用另一个脚本。bats -mock库似乎应该可以解决问题,但根本没有记录。

我试过查看bats-mock 代码和其他人创建的几个测试帮助脚本(比如这个),但不幸的是,我对 bash 不太满意,无法推断如何正确使用 bats-mock 库.

如何使用 bats-mock 库来模拟脚本并断言对模拟的调用?

0 投票
2 回答
1305 浏览

bash - bats - 我如何在 bats 脚本中回显文件名以进行报告

我有一些运行以测试某些功能的bats脚本,如何在脚本中回显 bats 文件名?

我的蝙蝠脚本看起来像:

为了让我的报告显示为:

但得到了错误

正确的方法是什么?我不想更改它的集合名称,只是为了在不同测试之间回显文件名。

谢谢。

0 投票
1 回答
794 浏览

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

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

类似的东西

编辑:

我可以做类似的事情

这对于在测试开始时运行的检查非常有效,只是它不会作为报告的一部分输出。

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

0 投票
1 回答
437 浏览

bats-core - 如何使用蝙蝠测试`read -p`

我有一个实用程序脚本,它包含两个提示用户输入的函数;anykeyyesno

如何测试提示?提示文本不显示在$output.

另外,如何强制yesnowhile 循环从测试中跳出 while 循环?

我的utility.bats文件中有以下内容:

除最后一项外,所有测试yesno rejects x似乎都正常工作。最后一个因while true循环而挂起。如何在测试中模拟多个键盘输入?

编辑:警告功能很简单:

warn() { printf '%s\n' "$*" >&2; }

0 投票
1 回答
257 浏览

bash - bats - 我如何将错误写入日志文件而不是一般输出+在并行中运行测试?

  1. 我在自动化测试套件中 运行了很多Bats测试 -有没有办法将失败消息写入单独的文件?
    当多个测试失败时,由于大量日志,因此非常不清楚。我希望一般输出只显示测试的“通过/失败”,并且日志应该包含每个测试的错误。

  2. 有没有办法并行运行测试以节省时间?

0 投票
1 回答
257 浏览

bash - 锻炼 Bash Track

我正在 exercism.io 上尝试 bash 课程 https://exercism.io/my/solutions/8d68ead0c1ad4caabf25410806ade766

我已经安装了练习文件,安装了 bats,当我运行测试时:bats hello_world_test.sh

它输出和错误:

bats hello_world_test.sh 的代码是: