Perl测试::更多详细的进程
我正在用Perl测试::更多详细的进程,perl,Perl,我正在用test::More为一个非常冗长的过程编写一个Perl测试脚本。我试图找出一个好的实践,突出显示我正在测试的详细过程中的测试结果 use Test::More; ok( verbose_process(), 'Test A of a verbose process' ); ok( verbose_process(), 'Test B of a verbose process' ); ok( verbose_process(), 'Test C of a verbose process
test::More
为一个非常冗长的过程编写一个Perl测试脚本。我试图找出一个好的实践,突出显示我正在测试的详细过程中的测试结果
use Test::More;
ok( verbose_process(), 'Test A of a verbose process' );
ok( verbose_process(), 'Test B of a verbose process' );
ok( verbose_process(), 'Test C of a verbose process' );
sub verbose_process{
print "$_\n" for (0..100);
return 1;
}
我正在想象一种方法,在脚本的底部询问Test::More
一个测试摘要。这可能吗?还是我应该抑制我冗长的过程的输出 用于从流程中捕获STDOUT和STDERR。然后,您可以测试STDUT/STDER以确保它们包含预期的数据,或者如果您认为输出不重要,则丢弃它们。
use strict;
use warnings;
use Test::More;
use Capture::Tiny qw(capture);
my (undef, undef, $result_a) = capture { scalar verbose_process() };
ok($result_a, 'Test A of a verbose process');
my (undef, undef, $result_b) = capture { scalar verbose_process() };
ok($result_b, 'Test B of a verbose process');
my ($stdout_c, undef, $result_c) = capture { scalar verbose_process() };
ok($result_c, 'Test C of a verbose process');
like($stdout_c, qr/100\n\z/, '... and count to STDOUT ended correctly');
sub verbose_process {
print "$_\n" for (0..100);
return 1;
}
done_testing;
我想保留所有的长篇大论。我遇到的问题是,测试结果在整个流程输出中分布不多。通过
prove
运行测试脚本,它总是在最后打印摘要?尽管我个人认为,当运行测试脚本时,它应该只以TAP格式输出测试结果,而不输出其他内容。TAP格式允许诊断注释。Test::More提供了用于输出诊断的diag
和note
函数。很酷,我有点想知道是否任何冗长的内容都太冗长了。