代码之家  ›  专栏  ›  技术社区  ›  knb

PerlTap测试:如何从TAP::Formatter::HTML输出获取失败测试的计数?

  •  0
  • knb  · 技术社区  · 14 年前

    我使用TAP::Formatter::HTML运行了一些TAP测试。

    这个CPAN模块生成漂亮的动态HTML报告,但是我想使用通过的测试、失败的测试等的数量-在所有测试完成后将它们插入数据库。

    在深入研究聚合器、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";
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Ether    14 年前

    为什么不从相同的源TAP::Formatter::HTML获取测试数据呢?可能是在检查 Test::Builder 对象并从中获取测试统计信息。Test::Builder对象是一个单例对象,因此在完成测试后请求它的副本并从中提取数据以插入数据库是非常容易的,同时生成漂亮的HTML报告。

        2
  •  0
  •   daxim Fayland Lam    14 年前
        3
  •  0
  •   knb    14 年前

    回答我自己的问题:

       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;