出于测试目的,我想创建一个包装脚本,可以在不更改原始脚本的情况下为现有脚本添加功能。我的问题是,这在perl中是否可行,我该怎么做?
包装器脚本可以执行以下操作:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Aspect;
run syntax checking on config files;
run unittesting stuff;
call production script;
生产脚本将保持不变,完全独立:
#!/usr/bin/perl
use strict;
use warnings;
bunch of production code here;
当然,我希望诊断和方面编织能够处理生产代码。我已经尝试过一些简单的东西而且它们没有用,代码甚至没有运行。
eval { require "production.pl" };
do 'production.pl';
require 'production.pl';
答案 0 :(得分:1)
我会使用Test::Script::Run。这些块可以帮助您分离测试用例。
您可以通过这种方式调用您的程序来获取诊断消息:
perl -Mdiagnostics -MAspect your_script.pl [args]
这是如何整合这个测试的:
use Test::More;
use Test::Script::Run;
### test 1
{
note 'test1 is running...';
note 'test 1 app_name running fine';
run_ok( 'app_name', [ app's args ], 'app_name runs ok' );
note 'test 1 does not throws errors and returns correct values';
my ( $return, $stdout, $stderr ) = run_script( 'app_name', [ app's args ] );
run_output_matches_unordered(
'app_name', [ app's args ],
[ 'out line 2', 'out line 1' ],
[ 'err line 2', 'err line 1' ],
'run_output_matches_unordered'
);
};
### test 2
{
...
};
done_testing();