如何为Perl脚本编写单元测试用例

斯里坎特·耶娃(Srikanth Jeeva)

我能够test_case.t为Perl模块编写单元测试ModuleOne.pm

test_case.t

use strict;
use warnings;
use Test::More;
use Test::Cmd;
use ModuleOne; # Included the module here

my $ret = ModuleOne::methodone(args);
is($ret->{val}, 1, "Checking return value"); # success 

我正在尝试为Perl脚本实现相同的单元测试用例 script_one.pl

script_one.pl

use strict;
use warnings;
use ModuleOne;

my $NAME;
my $ID;

# get parameters
GetOptions (
 "name" => \$NAME,
 "emp_id" => \$ID,
)

validate_params();

sub validate_params {
   # this method will validate params 
}

sub print_name {
   # this method will print name 
}

我如何script_one.pl这个Perl文件包含test_case.t方法validate_params为方法编写测试用例print_name

津巴布韦

有两种选择。一种是使用Test :: Script来查看您的代码是否可以编译和运行以及是否执行了某些操作。不过,它更像是一个集成测试,而不是一个单元测试,而且如果您有外部依赖项,例如写入文件系统,则很难像这样模拟那些。

由于脚本中包含子程序,所以最简单的方法可能是在测试文件中requiredo脚本中,或者在另一个文件中package(但这并不重要)。然后,您可以调用这些函数,因为它们在您的名称空间之一中。

use strict;
use warnings;
use Test::More;

package Foo {
    do 'script_one.pl';
};

is Foo::print_name, 'foo', 'prints the right name';

这样,您可以更轻松地模拟依赖关系,并获得更多控制权。唯一可能棘手的是不在subs中的代码,这些代码将在调用时运行,例如对的调用validate_params可以只使用Capture :: Tiny在地毯下面刷一下。

最好的选择是不要在脚本中包含函数。只需制作另一个具有这些功能的模块,然后在脚本中调用它即可。拥有如下脚本是很好的。

#!/usr/bin/env perl
use strict;
use warnings;
use My::Modules::Foo;

My::Modules::Foo->run; # or ::run()

是否为OOP无关紧要。这个想法将是相同的。如果正确封装了该代码,则无需使用该脚本就可以对所有代码进行单元测试。

关于GetOpts东西,这些变量可以是脚本的词法,但是您使用大写字母命名以及缺少validate_params调用参数的情况表明它们确实是程序范围的,并且在函数内部使用。不要那样做 subs使用参数将所有子项放在中package,然后在脚本中包含GetOpts,然后将选项作为参数传递给函数。

这样,您可以测试所有内容,并且实际上不需要脚本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring Boot:如何编写用于删除其余模板的单元测试用例

如何使用Mockito为控制器类编写单元测试用例

如何为线程运行方法编写junit测试用例

如何为setInterval()函数编写测试用例

如何为BadRequest编写单元测试用例?

如何为Android API编写单元测试用例?

如何为使用juid的uuid编写函数的测试用例?

如何为CombineLatestrxjs Angular编写Jasmine Unit测试用例

如何编写使用return关键字的单元测试用例?

如何编写单元测试用例以为ListenableFuture添加回调

如何在UIWebView / WebKit中编写单元测试用例(XCTest)-Swift

如何为方法编写单元测试用例[Angular]

如何为Ansible功能创建单元测试用例?

在VS2012中编写单元测试用例

如何为CDI编写Junit测试用例?

如何为我的函数编写测试用例?的PHP

如何为Thread类编写Junit测试用例

如何为ExecuteNonQuery和ExecuteScalar和GetDataSet方法编写模拟单元测试用例

如何为测试用例生成一些报告以进行单元测试?

如何为 jQuery on() 方法编写 Jasmine 测试用例

如何为 ProcessBuilder 编写测试用例

如何编写单元测试用例以在 Angular 中使用下拉框列表提交表单?

如何为抽象类方法编写测试用例

我是打字稿、反应和单元测试的新手。如何用玩笑为以下函数编写测试用例?

如何为给定方法编写测试用例

如何在 Angular 中为 HTTPClient get() 方法服务编写单元测试用例?

如何为 spring boot 编写 Junit 测试用例:

如何在 angular 7 中使用 jasmine 和 karma 编写单元测试用例

如何为 GlobalExceptionHandler ControllerAdvice 编写 Spring boot 测试用例