如何从 Perl 的 Test::Simple 重定向测试输出?

PJ.*_*PJ. 3 perl

我正在编写一个简单的测试自动化套件,它会告诉我通过和失败的测试用例的数量。下面是一个描述代码的简单示例:

#! /usr/bin/perl -w

use Test::Simple tests => 1;

print "Enter the name of the Book: ";
$name = <STDIN>;
chomp($name);

print "You have entered $name \n";

$ori_name = "TextBook";

chomp($ori_name);

ok($name eq $ori_name, 'Checking name');
Run Code Online (Sandbox Code Playgroud)

输入“TextBox”作为输入后,我得到的输出如下:

1..1
Enter the name of the Book: TextBook
You have entered TextBook
ok 1 - Checking name
Run Code Online (Sandbox Code Playgroud)

我想将相同的输出重定向到一个文件,它应该看起来像

ok 1 - Checking name
Run Code Online (Sandbox Code Playgroud)

如果我添加以下子程序

log_message (ok ($name eq $ori_name, 'Checking name');


sub log_message
{
    my $message = @_;

    open(DA, '>>PJ.txt') or die "Couldn't open file PJ.txt";

    print DA $message;

    close (DA);
}
Run Code Online (Sandbox Code Playgroud)

然后我得到 ' 1' 或 ' 0' - 不是我想要的文本。

我应该如何进行,以便我的代码的结果重定向到一个文件,该文件应具有以下格式:

ok 1 - Checking name

ok 2 - Checking others
Run Code Online (Sandbox Code Playgroud)

等等?

yst*_*sth 5

Test::Simple是一个Test::Builder::Module子类;您可以通过获取Test::Builder对象 ( $TestBuilder = Test::Simple::->builder()) 然后调用其输出方法(请参阅Test::Builder输出)来更改输出的目标。