2024年9月26日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:开发版
不支持版本:11 / 10 / 9.6 / 9.5 / 9.4

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 来定义一个以空格分隔的路径列表,这些路径相对于调用 proveMakefile,以运行指定测试子集而不是默认的 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 设置为更高的数字将更改默认值以避免这种情况。

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表单 报告文档问题。