Test IT поддерживает интеграцию с Jenkins. Для настройки используется все несколько строк кода и поддерживаются любые тестовые фреймворки и платформы.

Вы можете интегрировать как простые проекты (только с запуском тестов), так и сложные проекты (несколько отдельных проектов), которые запускаются в несколько независимых потоков.

Независимо от ваших требований процесс интеграции всегда будет одинаков:

  1. Запуск автоматизированных тестов в пайплайнах Jenkins.
  2. Генерация Junit XML отчета с результатами автоматизированных тестов.
  3. Загрузка результатов с помощью Test IT CLI

Не забывайте передавать приватный токен через переменную окружения TMS_TOKEN для корректной работы утилиты Test IT CLI. Как это сделать безопасно смотрите ниже.

Стандартный запуск

В данном разделе показано как запускать простые проекты в Jenkins. В качестве примера мы выбрали тестовый фреймворк Pytest для Python. Но данная инструкция будет актуальна для любых тестовых фреймворков и платформ.

Мы будем использовать утилиту Test IT CLI для быстрой и простой интеграции с нашей системой управления тестированием. С помощью одной команды мы загрузим все результаты автоматизированных тестов.

Ниже представлен пример файла Jenkinsfile, который отвечает за работу пайплайнов в Jenkins:

# Jenkinsfile
pipeline {
    agent {
        docker { image 'python:3.10-bullseye' }
    }

    stages {
        stage('Test') {
            steps {
                // Install project dependencies
                sh '''
                  python -m pip install --upgrade pip
                  pip install -r requirements.txt
                '''

                // Execute test and generate report
                sh 'pytest --junitxml=results/test-results.xml src/tests.py'

                // Install Test IT CLI and submit test results to TMS
                sh '''
                  pip install testit-cli
                  testit \
                    --url <YOUR_INSTANCE_URL> \
                    --project-id 5236eb3f-7c05-46f9-a609-dc0278896464 \
                    --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
                    --testrun-name "Jenkins test run" \
                    --results results/test-results.xml
                '''
            }
        }
    }
    post {
        always {
            junit 'results/*.xml'
        }
    }
}

Простым добавлением необходимых шагов вы можете запускать множество необходимых вам тестов и загружать их в Test IT. Больше информации вы можете найти в официальной документацииopen in new window.

Параллельный запуск

Мы так же полностью поддерживаем параллельный запуск автоматизированных тестов в Jenkins. Добавляются дополнительные независимые шаги для создания, завершения тестрана и запуска тестов.

Ниже представлен пример файла Jenkinsfile, который отвечает за работу пайплайнов в Jenkins:

# Jenkinsfile
pipeline {
    agent {
        docker { image 'python:3.10-bullseye' }
    }

    stages {
        stage('Create') {
            steps {
                // Install Test IT CLI and create testrun
                sh '''
                  pip install testit-cli
                  testit \
                    --mode create \
                    --url <YOUR_INSTANCE_URL> \
                    --project-id 5236eb3f-7c05-46f9-a609-dc0278896464 \
                    --testrun-name "Jenkins test run" \
                    --output output.txt 
                '''

                // Install project dependencies
                sh '''
                  python -m pip install --upgrade pip
                  pip install -r requirements.txt
                '''
            }
        }

        stage('Test') {
            steps {
                parallel(
                    thread_1: {
                        // Execute test and generate report
                        sh 'pytest --junitxml=results/test-results-1.xml src/tests.py'
                        
                        // Submit test results to TMS
                        sh '''
                          testit \
                            --mode upload \
                            --url <YOUR_INSTANCE_URL> \
                            --testrun-id "$(cat output.txt)" \
                            --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
                            --results results/test-results-1.xml
                        '''

                    },
                    thread_2: {
                        // Execute test and generate report
                        sh 'pytest --junitxml=results/test-results-2.xml src/tests.py'

                        // Submit test results to TMS
                        sh '''
                          testit \
                            --mode upload \
                            --url <YOUR_INSTANCE_URL> \
                            --testrun-id "$(cat output.txt)" \
                            --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
                            --results results/test-results-2.xml
                        '''
                    }
                    ...
                    thread_n: {
                        // Execute test and generate report
                        sh 'pytest --junitxml=results/test-results-n.xml src/tests.py'

                        // Submit test results to TMS
                        sh '''
                          testit \
                            --mode upload \
                            --url <YOUR_INSTANCE_URL> \
                            --testrun-id "$(cat output.txt)" \
                            --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
                            --results results/test-results-n.xml
                        '''
                    }
                )
            }
        }
    }
    post {
        always {
            junit 'results/*.xml'
            // Complete testrun
            sh '''
              testit \
                --mode finish \
                --url <YOUR_INSTANCE_URL> \
                --testrun-id "$(cat output.txt)"
            '''
        }
    }
}

Безопасное хранение данных

Для работы утилиты Test IT CLI вам необходимо использовать приватный токен для авторизации. Хранение данного токена и другой чувствительной информации в коде строго не рекомендуется, так как доступ к этой информации будет иметь любой у кого есть доступ к коду.

Используйте секреты Jenkins для хранения чувствительной информации. Подробнее с секретами вы можете ознакомится в официальной документацииopen in new window.