19 августа 2014 г. BDD Jenkins CI Lettuce Splinter

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 тесты!

Комментарии

Эта новость попала в http://pythondigest.ru/feed/?lang=ru

Оставьте свой комментарий

Markdown