↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4
开发快照。 PostgreSQL 20devel 尚未正式发布,内容仍可能变化。

31.4. TAP 测试 #

各种测试,尤其是 src/bin 下的客户端程序测试,会使用 Perl TAP 工具,并通过 Perl 测试程序 prove 运行。你可以通过设置 make 变量 PROVE_FLAGS 来向 prove 传递命令行选项,例如:

make -C src/bin check PROVE_FLAGS='--timer'

更多信息请参见 prove 的手册页。

make 变量 PROVE_TESTS 可用于定义一个以空白分隔的路径列表,这些路径相对于 Makefile;该文件调用 prove 来运行指定的测试子集,而不是默认的 t/*.pl。例如:

make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'

TAP 测试需要 Perl 模块 IPC::Run。该模块可从 CPAN 或操作系统软件包获得。此外,这些测试还要求 PostgreSQL 在配置时使用 --enable-tap-tests 选项。

一般来说,如果执行 make installcheck,TAP 测试会测试先前安装树中的可执行文件;如果执行 make check,则会根据当前源码构建一个新的本地安装树。无论哪种情况,它们都会初始化一个本地实例(数据目录),并在其中临时运行服务器。其中一些测试会运行多个服务器。因此,这些测试可能相当耗费资源。

需要注意的是,即使执行 make installcheck,TAP 测试也会启动测试服务器;这不同于传统的非 TAP 测试基础设施,后者在该情况下期望使用一个已经运行的测试服务器。PostgreSQL 的某些子目录同时包含传统风格和 TAP 风格的测试,这意味着 make installcheck 会产生来自临时服务器和已在运行的测试服务器的混合结果。

31.4.1. 环境变量 #

数据目录会根据测试文件名命名,如果测试失败就会被保留。如果设置了环境变量 PG_TEST_NOCLEAN,无论测试状态如何,数据目录都会保留。例如,运行 pg_dump 测试时,无论测试结果如何都保留数据目录:

PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check

这个环境变量还会阻止删除测试的临时目录。

测试套件中的许多操作使用 180 秒超时,在较慢的主机上可能会导致因负载引起的超时。将环境变量 PG_TEST_TIMEOUT_DEFAULT 设为更大的数值,可以修改默认值以避免这种情况。

对于某些测试,可以将环境变量 PG_TEST_FILE_READ_LINES 设为一个值,以限制从大型输出文件(开头和结尾)读取的行数。这在测试输出包含大量不必要内容时很有用,可以让测试框架只读取有限行数用于报告。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.