Как объединить результаты теста коллекции Newman в один действительный XML-файл для Jenkins?

У меня есть небольшой конвейер Jenkins, который последовательно тестирует разные коллекции Postman, и после этого я объединяю отдельные файлы XML в один, чтобы в результате передать их Jenkins.

Фрагмент конвейера:

...
steps {
  script {
    try {
        sh '(cd ./integrativeTests/collections && rm -rf *.xml)'
        sh '(cd ./integrativeTests/collections && npm run tests-all)'

        sh '''
        cd ./integrativeTests/collections

        echo '<?xml version="1.0" encoding="UTF-8"?>' > newman_dev_results.xml
        echo '<testsuites>' >> newman_dev_results.xml

        for f in COLLECTION-*.xml
        do
          echo $(sed 1,$(expr $(grep -m1 -n "<testsuite" ${f} | cut -f1 -d:) - 1)d ${f}) >> newman_dev_results.xml
        done

        echo '</testsuites>' >> newman_dev_results.xml
        cat newman_dev_results.xml
        '''

        sh '(cp ./integrativeTests/collections/newman_dev_results.xml ./newman_results.xml)'
        currentBuild.result = 'SUCCESS'
    } catch(Exception e) {
        currentBuild.result = 'FAILURE'
    }
    junit 'newman_results.xml'
  }
}
...

Результирующий XML выглядит так:

XML-снимок экрана

Но, к сожалению, в журнале Jenkins появляется ОШИБКА:

ERROR: None of the test reports contained any result
Finished: FAILURE

Какой правильный xml-макет для результата теста с несколькими коллекциями для Jenkins или как передать несколько результатов теста Jenkins?


person Thomas Schwärzl    schedule 26.03.2018    source источник


Ответы (1)


Как указано в официальных документах подключаемого модуля Junit, мне не нужно объединить все xml самостоятельно и передать один файл. Мне просто нужно передать все XML-файлы сразу с подстановочным знаком.

Конвейер:

...
steps {
    script {
        try {
            sh '(cd ./integrativeTests/collections && npm run tests-all)'
            currentBuild.result = 'SUCCESS'
        } catch(Exception e) {
            currentBuild.result = 'FAILURE'
        }
        sh 'junit-viewer --results=./integrativeTests/collections --save=result.html'
        archiveArtifacts artifacts: 'result.html', fingerprint: true
        junit '**/integrativeTests/collections/COLLECTION-*.xml'
    }
}
...
person Thomas Schwärzl    schedule 26.03.2018