我对Buildbot提供的统计数据并不特别满意.我知道它是用于构建而不是测试 - 这就是为什么它有步骤的概念,但没有测试的概念.当您需要构建结果中的测试统计信息时,仍有许多情况.例如,在不同平台上比较跳过和失败的测试以估计更改的影响时.
那么,需要什么来使Buildbot在结果中显示测试计数?
什么是最简单的方法,这样一个对Buildbot一无所知的人可以在15分钟内做到这一点?
根据您希望如何处理测试结果以及如何呈现测试结果,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结果节点,并相应地在瀑布中显示结果.
