使用 Test::Base 构建你的测试框架

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

运行测试程序

在与 libt 同一级目录下执行:

prove -v t/main.t

或者

prove -v t/*

表示 t 目录下所有文件,若运行成功,则会列出来,若失败,也会有提示。

总结

看完上面的简单教程后也许你会觉得很简单,用 python 也可以很容易地实现呀!其实认真研究一下你会知道,这样的测试程序是很 直观高效 的。在上面的基础上,你可以完成很多很复杂的测试。如果你想了解更多这方面的信息,你可以看看春哥基于 Test::Base 写的测试框架 Test::Nginx,读春哥的代码是一个非常好的学习方法。

若在使用 Test::Base 构建自己的测试框架的过程中遇到问题,欢迎交流!

作者:thomaston原文地址:https://segmentfault.com/a/1190000007876965

%s 个评论

要回复文章请先登录注册