Perl TAP-тестирование: как получить количество неудачных тестов из вывода TAP :: Formatter :: HTML? - PullRequest
0 голосов
/ 07 ноября 2010

Я запускаю несколько тестов 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 ]

1 голос
/ 07 ноября 2010

Почему бы не получить тестовые данные из того же источника, что и TAP :: Formatter :: HTML?Вероятно, он проверяет объект Test :: Builder и получает от него статистику теста.Объект Test :: Builder является одноэлементным, поэтому довольно легко запросить его копию после того, как ваши тесты будут выполнены, и извлечь из него данные для вставки в БД, примерно в то же время генерируются симпатичные HTML-отчеты.

0 голосов
/ 10 ноября 2010

Отвечая на мой собственный вопрос:

   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;

Все, что мне нужно было сделать, это использовать возвращаемое значение runtests.

0 голосов
/ 08 ноября 2010
...