Jenkins. Запуск BDD тестов c поддержкой WebDriver

Эта статья является продолжением Debian. Continuous Integration сервер Jenkins для непрерывного тестирования Django-проектов, только сегодня я расскажу как запускать BDD-тесты в связке Lettuce/Selenium/WebDriver для Django-проектов. Будем все также использовать Debian-based дистрибутив.
Установка Virtual Framebuffer 'fake' X server
Для того, чтобы запустить WebDriver нам понадобится FireFox (или IceWeasel), либо Chrome (или Chromium). Но на сервере обычно не устанавливается графический сервер X11, поэтому нам понадобится установить xvfb.
Xvfb or X virtual framebuffer is a display server implementing the X11 display server protocol. In contrast to other display servers Xvfb performs all graphical operations in memory without showing any screen output.
Это можно сделать так:
sudo apt-get install xvfb
Во FreeBSD можно установить из порта:И вам может пригодиться мой модифицированный скрипт для запуска xvfb, его можно посмотреть тутcd /usr/ports/x11-servers/xorg-vfbserver make install clean
Можно также почитать Linux: запуск графических приложений в фоне.
Рекомендую также обратить внимание на xvfbwrapper на python. Он нам не понадобится, но пакет полезный.
Установка FireFox
Теперь установим FireFox, на странице есть инструкции для различных дистрибутивов Linux, но нас интересует раздел для Debian , где вы найдете необходимые инструкции:
Добавьте в /etc/apt/sources.list или создайте файл в /etc/apt/sources.list.d/ и добавьте туда следующие репозитории:
deb squeeze-backports main deb squeeze-backports iceweasel-release
Теперь выполните обновления базы пакетов и установите IceWeasel:
apt-get update apt-get install -t squeeze-backports iceweasel
В Ubuntu я просто ставлю Firefox:
apt-get install firefox
Установка Chrome
Лично я сам пользуюсь только этим браузером, в силу того что он работает быстрее, поддерживает современные технологии и на мой вгляд у него лучше сделан Developer Tools.
Добавим в "/etc/apt/sources.list" следующее:
deb stable main
Применяем ключи и устанавливаем google-chrome-stable:
wget -q -O - | sudo apt-key add - sudo apt-get update sudo apt-get install google-chrome-stable
Можно почитать Установка Google Chrome в Debian
Установка ChromeDriver
Идем на страницу (сюда ведет оф. ссылка с и выбираем подходящую версию.
Я выбрал "2.10" (это последняя на момент написания статьи), теперь ее установим:
sudo su - jenkins cd ~ wget unzip chromedriver_linux64.zip
Теперь можно переместить бинарник "chromedriver" в /usr/local/bin (и не забыть наделить правами на запуск для всех остальных "o+x"), либо положить в домашнюю директорию пользователя от которого будете запускать тесты (например, jenkins):
mkdir ~/bin mv chromedriver ~/bin echo "export PATH=$PATH:$HOME/bin" >> ~/.bash_profile
Также есть инструкции на страничке Splinter - Chrome WebDriver
Запускаем chromedriver, проверяем что он работает:
chromedriver Starting ChromeDriver (v2.10.267518) on port 9515 Only local connections are allowed.
Жмем Ctrl+C.
Добавление и настройка задачи для Jenkins
Нажимаем New Job (или "New Item" в более новых версиях Jenkins), выбираем Build a free-style software project, называем задачу как хочется, например "Testing_Project".
В секции "Source Code Management" выбрать чекбокс на "Git Repositories". В "Repository URL" вставляем git@git.example.org:repo-name.git, а в "Branches to build" указываем нужную ветку, например "master".
Теперь настроим "Poll SCM" > "Schedule". Будем каждые 2 минуты проверять изменения в репозитории, если появились изменения, то запускается новый билд с тестами:
H/2 * * * *
В секции Build Environment, выбираем:
- "Add timestamps to the Console Output"
- "Color ANSI Console Output" (в появившемся селекте я выбираю "xterm")
Переходим к самому главному, добавляем секцию для запуска тестов "Build" > "Add build step" > "Execute shell":
virtualenv --no-site-packages --distribute venv # Устанавливаем зависимости для проекта и тестов venv/bin/pip install --upgrade -r requirements/base.txt venv/bin/pip install --upgrade -r requirements/tests.txt # Запускаем тесты с использованием lettuce venv/bin/python ./manage.py harvest -d --apps=tests --verbosity=4 --settings=test_settings mkdir -p reports xvfb-run -l -s '-screen 0 1280x1024x16 -ac' venv/bin/python ./manage.py harvest --apps=example.tests --verbosity=3 --settings=test_settings --with-xunit --xunit-file=./reports/junit-lettuce.xml example/tests/features/*.feature
Вот собственно и все, теперь мы можем запускать полноценные функциональные BDD тесты!
Комментарии
Эта новость попала в http://pythondigest.ru/feed/?lang=ru
Оставьте свой комментарий