我正在编写用于检查C代码的perl测试用例.这里我用不同的值多次调用C文件并检查它是否返回1.我的perl文件看起来像这样:
my $variableCheck1,$variableCheck2,$variableCheck3.....
.
.
.
.
if(($variableCheck1 == 1) && ($variableCheck2 == 1) && ($variableCheck3 == 1).....)
{
print "Test cases are passed";
}
Run Code Online (Sandbox Code Playgroud)
问题是有很多检查变量.有没有办法让我可以在循环中运行所有检查变量,同时将数字附加到check变量,就像这样
for($i=1 ; $i < 12 ; $i++)
{
if($variableCheck_$i == 1)
{
print "Test cases are passed";
}
}
Run Code Online (Sandbox Code Playgroud)
追加,使得每个循环变量名称根据值$ i变化:variableCheck1,variableCheck2.
最好使用一个实际的测试库,比如Test :: More,它会告诉你所有测试是否通过,以及提供许多有用的测试功能.然后,迭代各种参数值并运行测试非常简单.下面是一个示例,它将各种参数传递给echo命令,然后将结果传递给计算器程序,bc以查看该添加是否正常工作:
test_add.t
#!/usr/bin/env perl
use warnings;
use strict;
use Test::More;
for my $aa ( 1..3 ) {
for my $bb ( 1..3 ) {
my $expected = $aa + $bb;
my $prog = "echo $aa + $bb | bc";
my $output = `$prog`;
ok( $expected == $output, "$aa + $bb = $expected" );
}
}
done_testing();
Run Code Online (Sandbox Code Playgroud)
运行测试文件:
prove -v test_add.t
ok 1 - 1 + 1 = 2
ok 2 - 1 + 2 = 3
ok 3 - 1 + 3 = 4
ok 4 - 2 + 1 = 3
ok 5 - 2 + 2 = 4
ok 6 - 2 + 3 = 5
ok 7 - 3 + 1 = 4
ok 8 - 3 + 2 = 5
ok 9 - 3 + 3 = 6
1..9
ok
ll tests successful.
Files=1, Tests=9, 0 wallclock secs ( 0.05 usr 0.01 sys + 0.04 cusr 0.00 csys = 0.10 CPU)
Result: PASS
Run Code Online (Sandbox Code Playgroud)