2010-11-07 1 views
0

Я запускаю некоторые тесты TAP, используя TAP :: Formatter :: HTML.perl TAP testing: как получить счет неудавшихся тестов из TAP :: Formatter :: HTML output?

Этот модуль CPAN создает красивые динамические HTML-отчеты, но я хочу использовать количество пройденных тестов, неудачных тестов и т. Д. - вставить их в базу данных после завершения всех тестов.

Код ниже не работает. Он ничего не выводит на консоль. Я признаю, что для строк 10 и после этого я просто удалил некоторый код из описаний POD классов TAP :: *.

Перед тем, как погрузиться в исходный код агрегатора, Жгут или классов 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"; 

ответ

1

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

+0

Все, что мне нужно было сделать, это посмотреть на код метода TAP :: Harness-> runtests(). Он возвращает объект агрегатора, который содержит данные, которые я искал. – knb

0
+0

Вы заметили основную проблему, но исходный код App :: Prove :: history в этом случае мне не помог. Он * делает *, однако, хорошей отправной точкой для схемы базы данных, которую я мог бы использовать. Благодарю. – knb

0

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

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.