TravisCI - пример настройки для запуска UI/API тестов.

Всем привет. На текущем проекте в качестве CI - ми используем #TavisCI. У него есть много преимуществ и недостатков ( как и во всех остальных :joy:).

TavisCI


Основные преимущества, замеченные мною:

  • это возможность использовать этот инструмент абсолютно бесплатно ( хорошо подходит для личных проектов и для тестовых заданий);

  • из коробки есть возможность использовать несколько headless browsers (chrome, firefox);

В этой статье я хотел бы поделиться небольшим опытом использования этого инструмента для запуска тестов. Использую #python #pytest

Для того чтобы Travis выполнил команды - нужно создать файл .travis.yml и поместить в корень вашего проекта.

Пример файла .travis.yml который запускает джобу:

Вот пример моего файла:

в addons - я выбираю те приложения которые будут установлены перед запуском тестов. В данном случае - это Chrome - stable.

в install - устанавливаются все необходимые пакеты для запуска тестов.

А самое интересное происходит в jobs - запуск тестов.

jobs - позволяют разделить манипуляции с данным репозиторием на несколько отдельных шагов. Зачастую используют для запуска тестов перед деплоем и самого деплоя. Для себя я его использую чтобы запустить только тесты на разных енвах и отдельные специфические сценарии - которые по своему функционалу близки к мониторингу.

Вот как это выглядит

Запуск тестов

Пример запуска тестов :

travis_wait 30 tox -- -v -m e2e_email_processing --headless=true --browser=chrome --host=prod --browser_type=web moniroting/

#TravisCI - по дефолту дает вам 10 минут бездействия - если команда не возвращает результат. И если у вас сценарий где ожидание больше 10 минут, то используется команда

travis_wait. В моем случает ожидание до 30 минут. В #tox я передаюу необходимые аргументы.

Запуск API тестов

Если рассматривать запуск тестов для API тестирования, то сама настройка может быть проще в разы - не нужно устанавливать браузер. Пример самого базового файла для запуска тестов.

language: python
python:
  - "3.6"
# command to install dependencies
install: "pip install -r requirements.txt"
# command to run tests
script:
  - py.test -v py_tests/

Пример реализации одного тестового задания. Из ништяков - это возможность добавить статус тестов в сам репозитория на github.

Вывод

В целом этот инструмент позволяет реализовать все для быстрого и удобного запуска тестов ( и не только). Он может легко стать вам помошником как на большом проекте так и для собственных нужд, У него есть свои недостатки, но я решил, что пока не буду их озвучивать, есть большая вероятность что я недостаточно покопался в настройках и документации.
Если есть какие то вопросы или предложения по тому как все реализовано - буду рад отзывам, критике, советам).