从Jenkins Pipeline发布多个机器人测试结果

时间:2017-02-13 18:05:15

标签: robotframework jenkins-pipeline

我有一个Jenkins 2.0 Pipeline脚本,它运行两个独立的Robot测试套件。该脚本尝试发布两个测试套件结果,但是发布者使用最后一个发布覆盖了第一个发布。

node('robot') {
    ...
    publishTestResults('journey')
    publishTestResults('regression')
}

void publishTestResults(String type) {
step([
        $class           : 'hudson.plugins.robot.RobotPublisher',
        outputPath       : 'portfolio-app\\target\\robot-output\\' + type,
        passThreshold    : 100,
        unstableThreshold: 100,
        otherFiles       : '',
        reportFileName   : '*\\report*.html',
        logFileName      : '*\\log*.html',
        outputFileName   : '*\\output*.xml'
])

}

在UI中,我们看到两个已发布的结果,但这两个集都是针对regression测试用例的。最后一次发布获胜。

enter image description here

有没有办法可以发布两组机器人结果。

2 个答案:

答案 0 :(得分:3)

这不会直接回答您的问题,但它可以解决您要完成的任务。

您可以使用rebot将两组Robot结果合二为一。然后只需发布合并的报告。关于如何合并报告,有很多关于rebot的选项。

答案 1 :(得分:1)

我使用了一种变通方法,即在执行所有测试集之后,我只发布一次结果。

输出文件和报告参数设置为** /。ext。

并不完美,但似乎可以正常工作-我有一个“机器人表”,并且报表,日志等都可以在子文件夹中访问。

stage('Smoke tests'){
    steps {        
        bat('pybot --nostatusrc --outputdir ./robot_reports/smoke <other parameters>')
     }
}

stage('E2E tests'){
    steps {
        bat('pybot --nostatusrc --outputdir ./robot_reports/e2e <other parameters>')
      }
}

stage('Publish Robot results') {
    steps {
        script {
          step(
            [
              $class              : 'RobotPublisher',
              outputPath          : 'robot_reports',
              outputFileName      : "**/output.xml",
              reportFileName      : '**/report.html',
              logFileName         : '**/log.html',
              disableArchiveOutput: false,
              passThreshold       : "${env.ROBOT_PASS_THRESHOLD}" as double,
              unstableThreshold   : "${env.ROBOT_UNSTABLE_THRESHOLD}" as double,
              otherFiles          : "**/*.png,**/*.jpg",
            ]
          )
        }
  }
}