Perl TAP-тестирование: как получить количество неудачных тестов из вывода TAP::Formatter::HTML?
Я запускаю некоторые TAP-тесты, используя TAP::Formatter::HTML.
Этот модуль CPAN генерирует прекрасные динамические отчеты HTML, но я хочу использовать количество пройденных тестов, неудачных тестов и т. Д. - чтобы вставить их в базу данных после завершения всех тестов.
Код ниже не работает. Он ничего не печатает на консоли. Я признаю, что для строк 10 и позже я просто собрал некоторый код из описаний POD классов TAP::*.
Прежде чем я углублюсь в исходный код классов и подклассов Aggregator, Harmess или Formatter, лучше спросить:
кто-нибудь здесь знает, как заставить этот код работать?
my $cons = TAP::Formatter::Console->new();
my $fmt = TAP::Formatter::HTML->new;
$fmt->css_uris( \@css_uris )->inline_css($my_css)->js_uris($js_uris)->inline_js($inline_js);
my $harness = TAP::Harness->new( { formatter => $fmt, merge => 1 } );
$fmt->output_file($outfile);
$harness->test_args(["--browser=$browser", "--config=$config"]);
my $aggregator = TAP::Parser::Aggregator->new;
$aggregator->start();
$harness->runtests(@tests);
# $harness->aggregate_tests( $aggregator, @tests );
$aggregator->stop();
# print $fmt->summary($aggregator);
my $txt = $cons->summary( $aggregator );
my $summary = <<'END_SUMMARY';
Passed: %s
Failed: %s
Unexpectedly succeeded: %s
END_SUMMARY
printf $summary,
scalar $aggregator->passed,
scalar $aggregator->failed,
scalar $aggregator->todo_passed;
#$failcount = sprintf("%03d", $harness->failures());
print "summary: $txt\n";
3 ответа
Почему бы не получить тестовые данные из того же источника, что и TAP::Formatter::HTML? Вероятно, он проверяет объект Test:: Builder и получает от него статистику теста. Объект Test:: Builder является одноэлементным, поэтому довольно просто запросить его копию после того, как ваши тесты будут выполнены, и извлечь из него данные для вставки в БД, примерно в то же самое время генерируются симпатичные HTML-отчеты.
Отвечая на мой собственный вопрос:
my $harness = TAP::Harness->new( { formatter => $fmt, merge => 1 } );
$harness->test_args( [ "--browser=$browser", "--config=$h{config}" ] );
my $agg = $harness->runtests(@tests);
my $summary = <<'END_SUMMARY';
Passed: %s
Failed: %s
Unexpectedly succeeded: %s
To do: %s
Skipped: %s
Planned: %s
END_SUMMARY
printf $summary, scalar $agg->passed,
scalar $agg->failed,
scalar $agg->todo_passed,
scalar $agg->todo ,
scalar $agg->todo_passed,
scalar $agg->skipped,
scalar $agg->planned;
Все, что мне нужно было сделать, это использовать возвращаемое значение тестов.