我,我必须在我的程序上运行大约100次测试并且逐个进行这样做会让我的时间变得糟糕,所以我希望编写一个脚本.我这样写一个单独的测试
./program test_1 > out_1
然后将它与我正在寻找的输出进行比较
diff -urpb expected_out_1 out_1 > diff_1
有人可以帮我写一个运行所有测试的简短Perl脚本.但请注意,上面的名称是占位符,我们不能循环test_*.所有测试都有扩展X.test和相应的预期输出文件扩展名为X.out.(注意名字是一样的)
hob*_*bbs 11
您可能需要考虑重写您的测试以使用在Perl中有很好支持的Test Anything Protocol.
use Test::More;
my @files = glob("*.test");
plan tests => scalar @files;
for my $file (@files) {
(my $name = $file) =~ s/\.test$//;
system("program $file > $name.out");
is system("diff -urpb expected_$name.out $name.out > $name.diff"),
0, $name;
}
Run Code Online (Sandbox Code Playgroud)
你可以直接运行它 - TAP是人类可读的,输出看起来像
1..100
ok 1 - test_a
ok 2 - test_b
...
ok 100 - zargle_fnargle
或者你可以在测试工具内部运行它prove,这将在测试运行时为你提供一个很好的状态显示,并用输出结果汇总结果
100 ....好
所有测试成功.
Files = 1,Tests = 100,200 wallclock secs(等等等等)
也许
100 ....
#
在test.t第7行 测试'tricky_test'#失败#
在test.t第7行 测试'another_tough_one'#失败#看起来你在100个测试中失败了100个
.DIED.失败测试
3,54失败2/100测试,98.00%好
(等等)
这是一个非常有用的工具.:)
my @files = glob("*.test");
foreach my $file ( @files) {
$file =~ /^(.*?)\.test$/;
my name = $1;
system("program $file > $name.out");
system("diff -urpb expected_$name.out $name.out > $name.diff");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |