Test::Base 简介
Test::Base
是一个数据驱动测试框架,能让你更加容易地编写你自己的测试框架。在学习 Test::Base
之前,你需要具有一点点的 Perl
语言基础。关于 Test::Base
的官方说明请移动到 Test::Base 官方文档。
依赖安装
首先你需要安装 perl
,关于 perl
的安装这里不再详细展开,一般的 linux
系统都默认有安装,现在我们来安装一下 cpanm
,这是一个能够从 CPAN 中获取、解包编译和安装模块,在安装我们需要的模块 Test::Base
。
$apt-get install cpanminus
$cpanm Test::Base
创建目录和文件
为了介绍一下如何使用 Test::Base
,现在假设我们写一个测试框架来简单测试 code
段和 verify
段的代码是否一致,学会了这个基本的结构,你就能编写很多很复杂的测试用例,目录结构如下所示:
|——lib
| |——Test
| |——Style
| |——BaseLib.pm
| |——Util.pm
|——t
|——main.t
编辑 mian.t
文件:
use lib 'lib'; # 添加我们的库路劲 lib,上面的 lib 文件夹
use Test::Style::BaseLib 'no_plan'; # 选择 no_plan 表示没有测试计划
run_test(); # 执行程序自定义的入口函数
__DATA__
=== TEST 1: test1
--- code
local x = 1 --set x = 1
--- verify
local x = 1 -- set x = 1
=== TEST 2: test2
--- code
local x=1 -- set x = 1
--- verify
local x = 1 -- set x = 1
先讲解一下上面的程序,__DATA__
是 perl
代码中放置文本的地方。
文本区域是由 block
组成的。例如下面就是一个 block
:
=== TEST 1: test1
--- code
local x = 1 --set x = 1
--- verify
local x = 1 -- set x = 1
编辑 BaseLib.pm
文件:
package Test::Style::BaseLib;
# 注意!若要使用下面的模块需要用类似 cpanm Test::Base 这种方式来安装。
use Test::Base -Base;
use File::Temp qw( tempfile ); # 创建临时文件的模块
use IPC::Run (); # 此模块可以很好地执行我们的 shell 指令
use Data::Dumper;
# 导出本文件内的 run_test 函数,若没有此行代码 main.t 将无法使用该函数。
our @EXPORT = qw(
run_test
);
sub run_test(){
for my $block (Test::Base::blocks()) {
run_block($block);
}
}
sub run_block($) {
my $block = shift;
my $name = $block->name;
my $code= $block->code;
my $verify= $block->verify;
is $verify, $code, "$name - stdout eq okay"; # 判断 is 函数的第一个和第二个参数是否一致
}
1;
__END__
NONE
运行测试程序
在与 lib
和 t
同一级目录下执行:
prove -v t/main.t
或者
prove -v t/*
表示 t
目录下所有文件,若运行成功,则会列出来,若失败,也会有提示。
总结
看完上面的简单教程后也许你会觉得很简单,用 python
也可以很容易地实现呀!其实认真研究一下你会知道,这样的测试程序是很 直观 和 高效 的。在上面的基础上,你可以完成很多很复杂的测试。如果你想了解更多这方面的信息,你可以看看春哥基于 Test::Base 写的测试框架 Test::Nginx,读春哥的代码是一个非常好的学习方法。
若在使用 Test::Base
构建自己的测试框架的过程中遇到问题,欢迎交流!