在buildbot中显示测试计数

ana*_*nik 2 buildbot

对Buildbot提供统计数据并不特别满意.我知道它是用于构建而不是测试 - 这就是为什么它有步骤的概念,但没有测试的概念.当您需要构建结果中的测试统计信息时,仍有许多情况.例如,在不同平台上比较跳过和失败的测试以估计更改的影响时.

那么,需要什么来使Buildbot在结果中显示测试计数?
什么是最简单的方法,这样一个对Buildbot一无所知的人可以在15分钟内做到这一点?

sk1*_*k11 5

根据您希望如何处理测试结果以及如何呈现测试结果,Buildbot确实提供了一个Test步骤,buildbot.steps.shell.Test

我如何在构建环境中使用它的示例:

from buildbot.steps import shell

class CustomStepResult(shell.Test):
    description = 'Analyzing results'
    descriptionDone = 'Results analyzed'

    def __init__(self, log_file = None, *args, **kwargs):
        self._log_file = log_file
        shell.Test.__init__(self, *args, **kwargs)
        self.addFactoryArguments(log_file = log_file)

    def start(self):
        if not os.path.exists(self._log_file):
            self.finished(results.FAILURE)
            self.step_status.setText('TestResult XML file not found !')
        else:
            import xml.etree.ElementTree as etree
            tree = etree.parse(self._log_file)
            root = tree.getroot()

            passing = len(root.findall('./testsuite/testcase/success'))
            skipped = len(root.findall('./testsuite/testcase/skip'))
            fails = len(root.findall('./testsuite/error')) + len(root.findall('./testsuite/testcase/error')) + len(root.findall('./testsuite/testcase/failure'))

            self.setTestResults(total = fails+passing+skipped, failed = fails, passed = passing)
            ## the final status for WARNINGS is green but the step itself will be orange
            self.finished(results.SUCCESS if fails == 0 else results.WARNINGS)
            self.step_status.setText(self.describe(True))
Run Code Online (Sandbox Code Playgroud)

在配置工厂中,我创建了如下步骤:

factory.addStep(CustomStepResult(log_file = log_file))
Run Code Online (Sandbox Code Playgroud)

基本上我覆盖默认的Testshell步骤并传递包含我的测试结果的自定义XML文件.然后我查找pass/fail/skip结果节点,并相应地在瀑布中显示结果.

样本测试步骤包含统计信息