GitHub Actions

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

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

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

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

Используйте переменную окружения

Чтобы утилита Test IT CLI работала корректно, передавайте приватный токен через переменную окружения TMS_TOKEN. О безопасной передаче токена читайте в разделе Безопасное хранение данных.

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

Данная инструкция описывает запуск простого проекта в GitHub Actions. Она актуальна для любых тестовых фреймворков и платформ. В качестве примера описан запуск с помощью тестового фреймворка Pytest для Python.

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

Ниже представлен пример файла .python-app.yml, который отвечает за работу пайплайнов в GitHub Actions:

# .python-app.yml
name: Python application

on:
  push:
    branches: [ "main" ]

permissions:
  contents: read

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.10
      uses: actions/setup-python@v3
      with:
        python-version: "3.10"

    # Install project dependencies
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    # Execute test and generate report    
    - name: Test with pytest
      run: |
        pytest --junitxml=results/test-results.xml src/tests.py

    # Install Test IT CLI and submit test results to TMS    
    - name: Submit results
      if: always()
      run: |
        pip install testit-cli
        testit results import \
          --url <YOUR_INSTANCE_URL> \
          --project-id 5236eb3f-7c05-46f9-a609-dc0278896464 \
          --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
          --testrun-name "GitHub test run" \
          --results results/test-results.xml

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

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

Test IT поддерживает параллельный запуск автоматизированных тестов в GitHub Actions. При этом добавляются дополнительные независимые шаги для создания, завершения тест-рана и запуска тестов.

Ниже представлен пример файла .python-app.yml, который отвечает за работу пайплайнов в GitHub Actions:

# .python-app.yml
name: Python application

on:
  push:
    branches: [ "main" ]

permissions:
  contents: read

jobs:
  create:
    runs-on: ubuntu-latest
    outputs:
      test-run-id: ${{ steps.create-testrun.outputs.test-run-id }}
    steps:
    # Install Test IT CLI, create testrun and save testrun id to variable
    - name: Create testrun
      id: create-testrun
      run: |
        pip install testit-cli
        testit testrun create \
          --url <YOUR_INSTANCE_URL> \ 
          --project-id 5236eb3f-7c05-46f9-a609-dc0278896464 \
          --testrun-name "GitHub test run" \
          --output output.txt
        ID=$(cat output.txt)
        echo "test-run-id=$ID" >> $GITHUB_OUTPUT
  test:
    needs: create
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        ci_index: [0, 1, 2, 3]
        ci_total: [4]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.10
      uses: actions/setup-python@v3
      with:
        python-version: "3.10"

    # Install project dependencies 
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    
    # Execute test and generate report
    - name: Test with pytest
      run: |
        pytest --junitxml=results/test-results.xml src/tests.py
    
    # Install Test IT CLI and submit test results to TMS
    - name: Submit results
      if: always()
      run: |
        pip install testit-cli
        testit results upload \
          --url <YOUR_INSTANCE_URL> \
          --testrun-id $(testRunId) \
          --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
          --results results/test-results.xml
    env:
          CI_TOTAL: ${{ matrix.ci_total }}
          CI_INDEX: ${{ matrix.ci_index }}

  complete:
    needs: [create, test]
    if: always()
    runs-on: ubuntu-latest
    steps:
    # Install Test IT CLI and complete testrun
    - name: Complete testrun
      if: always()
      run: |
        pip install testit-cli
        testit testrun complete \
          --url <YOUR_INSTANCE_URL> \
          --testrun-id $(testRunId)

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

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

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

Обновлено: