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. http://en.wikipedia.org/wiki/Xvfb
Это можно сделать так:
sudo apt-get install xvfb
Во FreeBSD можно установить из порта:
cd /usr/ports/x11-servers/xorg-vfbserver make install cleanИ вам может пригодиться мой модифицированный скрипт для запуска xvfb, его можно посмотреть тут https://github.com/adw0rd/xvfb-run/blob/master/freebsd/xvfb-run
Можно также почитать Linux: запуск графических приложений в фоне.
Рекомендую также обратить внимание на xvfbwrapper на python. Он нам не понадобится, но пакет полезный.
Установка FireFox
Теперь установим FireFox, на странице http://mozilla-russia.org/products/firefox/linux.html есть инструкции для различных дистрибутивов Linux, но нас интересует раздел для Debian , где вы найдете необходимые инструкции:
Добавьте в /etc/apt/sources.list или создайте файл в /etc/apt/sources.list.d/ и добавьте туда следующие репозитории:
deb http://backports.debian.org/debian-backports squeeze-backports main
deb http://mozilla.debian.net/ 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 http://dl.google.com/linux/chrome/deb/ stable main
Применяем ключи и устанавливаем google-chrome-stable:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo apt-get update
sudo apt-get install google-chrome-stable
Можно почитать Установка Google Chrome в Debian
Установка ChromeDriver
Идем на страницу http://chromedriver.storage.googleapis.com/index.html (сюда ведет оф. ссылка с https://code.google.com/p/chromedriver/wiki/WheredAllTheDownloadsGo) и выбираем подходящую версию.
Я выбрал “2.10” (это последняя на момент написания статьи), теперь ее установим:
sudo su - jenkins
cd ~
wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
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 тесты!
Комментарии 1
Архив обсуждения. Новые комментарии закрыты.
Эта новость попала в http://pythondigest.ru/feed/?lang=ru