Всем привет. На текущем проекте в качестве CI - ми используем #TavisCI. У него есть много преимуществ и недостатков ( как и во всех остальных ).
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.
Вывод
В целом этот инструмент позволяет реализовать все для быстрого и удобного запуска тестов ( и не только). Он может легко стать вам помошником как на большом проекте так и для собственных нужд, У него есть свои недостатки, но я решил, что пока не буду их озвучивать, есть большая вероятность что я недостаточно покопался в настройках и документации.
Если есть какие то вопросы или предложения по тому как все реализовано - буду рад отзывам, критике, советам).