2010-11-07 16 views
0

我使用TAP :: Formatter :: HTML運行一些TAP測試。perl TAP測試:如何從TAP :: Formatter :: HTML輸出中獲得失敗測試的計數?

此CPAN模塊生成漂亮的動態HTML報告,但我想使用通過的測試數,失敗的測試等 - 在所有測試完成後將它們插入到數據庫中。

下面的代碼不起作用。它不向控制檯打印任何內容。我承認,對於第10行和之後的行,我只是將來自TAP :: *類的POD描述的一些代碼打包在一起。

之前,我潛入聚合,Harmess或格式化類和子類的源代碼,我最好問:

有誰知道這裏如何使此代碼的工作?

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呢?它可能正在檢查Test::Builder對象並從那裏獲取測試統計信息。 Test :: Builder對象是一個單獨的對象,所以在完成測試後請求它的一個副本並從中爲數據庫插入提取數據非常簡單,幾乎在生成漂亮的HTML報告的同時。

+0

我只需要查看TAP :: Harness-> runtests()方法的代碼。它返回一個包含我正在查找的數據的聚合器對象。 – knb 2010-11-10 17:56:18

0
+0

你發現了一個潛在的問題,但在這種情況下,App :: Prove :: history的源代碼並沒有太多幫助。不過,它包含了我可以使用的數據庫模式的一個很好的起點。謝謝。 – knb 2010-11-10 18:16:55

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的返回值做。

相關問題