首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl TAP testing:如何从TAP::Formatter::HTML输出中获取失败测试的计数?

perl TAP testing:如何从TAP::Formatter::HTML输出中获取失败测试的计数?
EN

Stack Overflow用户
提问于 2010-11-07 20:32:57
回答 3查看 538关注 0票数 0

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

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

下面的代码不起作用。它不会将任何内容打印到控制台。我承认,对于第10行和之后的行,我只是拼凑了一些来自TAP::*类的POD描述的代码。

在深入讨论聚合器、无害类或格式化程序类和子类的源代码之前,我最好先问一下:

这里有人知道如何让这段代码工作吗?

代码语言:javascript
复制
    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";
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-08 00:28:20

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

票数 1
EN

Stack Overflow用户

发布于 2010-11-09 03:00:53

票数 0
EN

Stack Overflow用户

发布于 2010-11-11 02:14:30

回答我自己的问题:

代码语言:javascript
复制
   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;

我所要做的就是使用runtest的返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4117714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档