Test::Nginx 是一个测试框架,可以驱动运行 NGINX 上的任何测试用例代码,自然也可以是 NGINX 的内核代码。使用 Perl 语言编写,因为近数年时间的积累,有丰富的测试设备,以及完整的周边工具链。更进一步,使用者都不需要知道这些测试用例框架是用 Perl 书写的,Test::Nginx
提供了一些简单符号来表达当前测试用例,并把它们用一种规范格式组织起来。
这种简单测试规范格式或称小语言,使得 Test::Nginx
的更像是 Perl 世界里 Test::Base 测试模块提供的各种通用测试语言中的一种方言。事实上,用面向对象的角度看,Test::Nginx
是 Test::Base
子类。这就意味着 Test::Base
提供的所有特性在 Test::Nginx
都是可用的,Test::Nginx
提供更易用的原语和符号,用来简化 NGINX 和 OpenResty 环境的测试。 Test::Base
的核心理念,是基于 Test::Base
的测试系统可以被广泛、有效的使用,甚至包括 Haskell 编程和 Linux 内核模块。Test::Nginx
只是我们为了 NGINX 和 OpenResty 测试创造的例子。有关 Test::Base
框架自身的详细讨论,已经超过了这本书的范畴,但在后续章节中,我们还将介绍 Test::Nginx
继承下来有关 Test::Base
的重要特性。
Test::Nginx
通过 CPAN (Comprehensive
Perl Archive Network)发行,与其他大多数 Perl 的库一致。如果在你的系统中已经安装了 perl
(大多数 Linux 版本已经默认包含了 perl
),这时你可以使用下面简单命令完成安装:
cpan Test::Nginx
对于第一次运行 cpan
工具,可能它将提示你配置 cpan
工具,以此来适配你的环境。如果你不确定这些选项,选择默认配置选项(如果有)或者接受所有默认选项。
Test::Nginx
针对不同用户环境,提供了几个不同的测试类。最经常被使用的一个是 Test::Nginx::Socket
。本章的剩余部分焦点将集中在测试类以及它们的子类。从现在开始没有特殊说明,我们将把 Test::Nginx
和 Test::Nginx::Socket
混合,使用 Test::Nginx::Socket
代表测试模块及其子类。
注意: 这里实际上还有另外一个不同的测试框架也叫 Test::Nginx
,是由 Maxim Dounin 创建并由 NGINX 官方团队保留。这个测试模块是通过 official
NGINX test suite 对外发行,除了这两者都是测试 NGINX 相关代码,它与我们的 Test::Nginx
没有任何联系。 NGINX 团队的 Test::Nginx
需要用户在 Perl 中直接写代码来表达测试用例,也就意味着他们在 Test::Nginx
所写的测试用例不是数据驱动并需要适当的 Perl 编程知识。