Один простой способ зафиксировать выходные данные – использовать флажок --archive
для подтверждения. Это позволит сохранить выходные данные набора тестов в tarball вместе со сводкой результатов. Вы также должны использовать флаг --merge
, чтобы захватить STDERR.
$ prove --archive test_out.tgz --merge my_test.pl
my_test.pl .. ok
All tests successful.
Files=1, Tests=3, 0 wallclock secs ( 0.01 usr 0.00 sys + 0.01 cusr 0.00 csys = 0.02 CPU)
Result: PASS
TAP Archive created at /home/you/test_out.tgz
Получив это, вы можете прочитать его на досуге, повторно проанализировать его с помощью TAP::Parser и делать с ним все, что хотите.
use TAP::Parser;
my $tap_file = shift;
open my $tap_fh, $tap_file or die $!;
# Can't just pass in the .t file, it will try to execute it.
my $parser = TAP::Parser->new({
source => $tap_fh
});
while ( my $result = $parser->next ) {
# do whatever you like with the $result, like print it back out
print $result->as_string, "\n";
}
Если по какой-то причине вы не можете/не хотите использовать доказательство, вы можете вставить код захвата в свой скрипт. Я бы НАСТОЯТЕЛЬНО РЕКОМЕНДОВАЛ ЭТОМУ ПРОТИВ, так как вы должны делать это для каждого тестового скрипта, он должен быть жестко запрограммирован в тесте, что делает их менее полезными для обычного тестирования (т.е. :: Harness (что доказывает, что это всего лишь оболочка)). Вы также должны проделать некоторые причудливые действия, чтобы убедиться, что вы захватили полный вывод теста, любые предупреждения, поступающие в STDERR или STDOUT, а не только вывод теста.
Итак, прежде чем я объясню это, поскольку вы запускаете тестовую программу вручную (чего делать не следует), вот как вы это делаете, используя оболочку bash.
perl my_test.pl > test.out 2>&1
Если это работает для вас, используйте это. Не стоит вдаваться в жесткое кодирование в скрипт.
Вам все еще нужно обработать test.out, используя что-то вроде сценария TAP::Harness выше, чтобы извлечь из него смысл, но это зафиксирует полный вывод программы. Вы можете сделать это за один шаг, опять же с перенаправлением оболочки.
perl my_test.pl 2>&1 | tap2oo
Где tap2oo — это ваша программа, которая переводит TAP в документ Open Office.
person
Schwern
schedule
08.12.2012