Публикация нескольких результатов испытаний роботов из конвейера Jenkins

У меня есть сценарий Jenkins 2.0 Pipeline, который запускает два отдельных набора тестов роботов. Сценарий пытается опубликовать оба результата набора тестов, однако издатель перезаписывает первую публикацию последней.

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'
])

}

В пользовательском интерфейсе мы видим два опубликованных результата, но оба набора предназначены для regression тестовых случаев. Выигрывает последняя публикация.

введите описание изображения здесь

Есть ли способ опубликовать два набора результатов роботов?


person timmy    schedule 13.02.2017    source источник


Ответы (2)


Это не даст прямого ответа на ваш вопрос, но это возможное решение того, чего вы пытаетесь достичь.

Вы можете использовать перезагрузку, чтобы объединить два набора результатов робота в один. А потом просто опубликуйте объединенный отчет. Есть много вариантов с перезагрузкой, как объединять отчеты.

person Kenneth E. Bellock    schedule 13.02.2017
comment
Спасибо. У вас есть документация, как это сделать? Это действительно был бы запасной вариант. Было бы идеально представить результаты двух наборов тестов по отдельности. - person timmy; 13.02.2017
comment
Документацию можно найти здесь: robotframework.org/robotframework/ latest / rebot --help предоставит список из множества вариантов. Я обычно использую что-то вроде rebot -o combined.xml -r combinedreport.html -l combinedlog.html -x combined.xunit **/*.xml, прежде чем приводить результаты в jenkins. - person Kenneth E. Bellock; 14.02.2017

Я использовал обходной путь: я публикую результаты только один раз после выполнения всех наборов тестов.

Параметры выходного файла и отчета задаются как ** /. 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",
            ]
          )
        }
  }
}
person BuckTheBug    schedule 17.07.2018
comment
В качестве улучшения для более сложного конвейера результаты должны храниться в конце каждого этапа и отключаться в начале этапа публикации. Мой конвейер работает несколько минут на одном узле, поэтому я еще не решил его. - person BuckTheBug; 09.08.2018