test-runner(1)

名称

run — 查找、执行测试并记录结果

概述

run [-dgq] [-o 输出目录] [-pP 脚本] [-t 秒数] [-uxX 用户名] 路径…
run -w 运行文件 [-gq] [-o 输出目录] [-pP 脚本] [-t 秒数] [-uxX 用户名] 路径…
run -c 运行文件 [-dq]
run [-h]

说明

run 命令有三种基本操作模式。

不使用 -c-w 时,run 会处理命令行中提供的参数,并将它们加入本次运行的测试列表。如果指定的路径名是可执行文件,则将其作为测试加入列表;如果指定的路径名是目录,则行为取决于是否使用了 -g。使用 -g 时,该目录被视为一个测试组。未使用 -g 时,run 会递归进入目录查找可执行文件。随后执行这些测试,并记录结果。

使用 -w 时,run 会按照上述方式查找测试,但不会执行测试或记录结果,而是将测试配置存储到运行文件(runfile)中。可以在将来的执行中使用该运行文件(runfile),或者将其进行编辑,修改成要执行的测试及其选项。命令行中与 -w 一起指定的选项会成为 runfile 中的默认值。

使用 -c 时,run 将解析某运行文件(runfile),该文件可以指定一系列要执行的测试和测试组。随后执行这些测试,并记录结果。

测试组

测试组由一组可执行文件组成,这些文件都位于同一目录下。命令行或运行文件(runfile)中指定的选项会应用到组内的各个测试上。例外的是与前置脚本和后置脚本相关的选项,它们作用于整个测试组,而不是每个测试。也就是说,这些脚本只会在测试组开始时和结束时各运行一次,而不是在每个测试前后运行。

测试执行

指定的测试按顺序执行,通常根据退出值分配结果。退出值为零和非零的测试分别标记为 PASS(成功)和 FAIL(失败)。当测试组的前置脚本失败时,只执行后置脚本,其余测试标记为 SKIPPED(已跳过)。任何超过超时时间的测试会被终止,并标记为 KILLED(已终止)。

默认情况下,测试使用 run 脚本的权限执行。使用其他权限执行测试需通过 sudo(1m) 配置,并允许无密码执行。调用 shell 的环境变量可用于各个测试。测试执行期间,工作目录会切换到输出目录(outputdir)。

输出日志

默认情况下,run 会在每个测试结束时在标准输出打印一行信息,显示测试名称、结果和耗时。此外,每次执行 run 时,会创建一个使用 ISO 8601 日期格式命名的目录。在该目录中有 log 文件,是带时间戳的所有测试输出,以及每个测试的子目录。在测试子目录中,分别存放标准输出、标准错误和合并输出文件。默认的输出目录(outputdir)位置为 /var/tmp/test_results

运行文件(runfile)

运行文件(runfile)是一种 INI 风格的配置文件,用于描述一次测试运行。文件包含 [DEFAULT] 这一节,在该节中包含配置选项及其值,格式为 name = value。该节中的值会应用于后续所有节,除非在后续节中也指定了相同选项,此时会覆盖默认值。其余节名为文件和目录的绝对路径名,分别描述测试和测试组。合法的选项名称如下:

outputdir = 路径名称

保存测试日志的目录名称。

pre = 脚本

在测试或测试组运行前执行的脚本。

pre_user = 用户名

以指定用户名执行前置脚本。

post = 脚本

在测试或测试组运行后执行的脚本。

post_user = 用户名

以指定用户名执行后置脚本。

quiet = True | False

如果为 True,则仅将结果摘要打印到标准输出。

tests = ['文件名', …]

指定该测试组的文件列表。只需提供绝对路径的文件名部分。此选项仅适用于测试组,每个文件名必须用单引号括起。

timeout = n

超时时间,单位为 n 秒。

user = 用户名

以指定用户名执行测试或测试组。

选项

-c 运行文件

指定运行文件(runfile),由 run 命令使用。

-d

干运行( Dry Run)模式。不执行测试,仅打印每个将被执行的测试描述。

-m

启用 kmemleak 报告(仅限 Linux)。

-g

在搜索测试时,将找到的目录创建为测试组。

-o 输出目录

指定写入测试结果的目录。

-p 脚本

在任何测试或测试组运行前执行的脚本。

-P 脚本

在任何测试或测试组运行后执行的脚本。

-q

仅将结果摘要打印到标准输出。

-s 脚本

在任何测试被终止后,作为安全措施执行的脚本。

-S 用户名

以指定用户名执行 failsafe 脚本。

-t n

为每个测试指定 n 秒的超时时间。

-u 用户名

以指定用户名执行测试或测试组。

-w 运行文件

指定要创建的运行文件(runfile)名称。

-x 用户名

以指定用户名执行前置脚本。

-X 用户名

以指定用户名执行后置脚本。

示例

示例 1:运行临时测试

该示例演示了 run 最简单的用法。

示例 2:创建用于后续的运行文件(runfile)

该示例演示了如何使用非默认选项创建运行文件。

参考文献

sudo(1m)

2021 年 5 月 26 日 Debian

最后更新于