如何在运行perl测试用例时将STDOUT和STDERR重定向到文件和屏幕上



我写了一个简单的Perl测试用例示例:

use Test::More;
is(2 + 4, 5, "Addition check"); 

屏幕上的输出:

Failed test 'Addition check'
at t/simpel_perl_test.t line 2.
got: '6'
expected: '5'

现在我想在日志文件和屏幕上打印一条消息?

我无法在<test case name>.t中使用现有的Perl模块IO::Tee来实现我的需求。

您能告诉我如何在Perl测试用例中在屏幕和日志文件中编写消息吗?

使用的命令:

prove -r --timer t/simpel_perl_test.t :: -d 

IO::Capture模块的编写正是为了在测试执行期间执行此操作。从阅读IO::Capture::Overview开始。但是,您似乎希望将测试线束输出发送到文件中。也许您想为prove提供一个可以写入文件的格式化程序参数。您可以使用cat对文件进行prove调用。尝试使用TAP::Formatter::File模块作为参数,尽管我不太清楚文件是如何命名的。

使用tee命令不是最好吗?

$ prove -r --timer simple_perl_test.t :: -d |tee simple_perl_test.txt
[02:08:12] simple_perl_test.t .. ok       24 ms ( 0.00 usr  0.00 sys +  0.02 cusr  0.00 csys =  0.02 CPU)
[02:08:12]
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.02 cusr  0.00 csys =  0.05 CPU)
Result: PASS
$ cat simple_perl_test.txt 
[02:08:12] simple_perl_test.t .. ok       24 ms ( 0.00 usr  0.00 sys +  0.02 cusr  0.00 csys =  0.02 CPU)
[02:08:12]
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.02 cusr  0.00 csys =  0.05 CPU)
Result: PASS
$

相关内容

  • 没有找到相关文章

最新更新