Это шпаргалка раскрывающая раздел «Интеграция Selenium тестов» статьи Настройка Jenkins для django проекта с нуля. А именно как запускать
Спасибо black_bunny за статью и она прекрасно покрывает установку и настрйоку
Для справки: тестировочный сервер у меня
Ставим и настраиваем
Для запуска тестов Selenium понадобится браузер и терминал вывода для этого самого браузера.
Ставим ему терминал:
и сам браузер:
Для работы тестов также потребуется пара python пакетов. Тут можно подсмотреть как автоматизировать сборку тестового окружения. Собственно я использую тот самый
Пакеты для работы
Сам автор
Положите этот код в файл
Добавьте в настройки проекта:
В этом месте:
настройку проекта
В общем нужно поместить выполнение тестов в виртуальный фреймбуфер
Вот и всё — удачных тестов!
Selenium
тесты на удалённом сервере Jenkins
у которого нет монитора и форточек.Спасибо black_bunny за статью и она прекрасно покрывает установку и настрйоку
Jenkins
, но у меня сломалась пара костылей пока я всё это дело объединил в работающую систему с его же django-selenium
. Теперь коротко и по делу.Для справки: тестировочный сервер у меня
Ubuntu 11.10 x64
без монитора и X.org
и описываемое действо выполнено именно на нём. Установка
Ставим и настраиваем
Jenkins
как описано в вышеупомянутой статье.Для запуска тестов Selenium понадобится браузер и терминал вывода для этого самого браузера.
Ставим ему терминал:
sudo apt-get install xvfb
и сам браузер:
sudo apt-get install --no-install-recommends firefox
Для работы тестов также потребуется пара python пакетов. Тут можно подсмотреть как автоматизировать сборку тестового окружения. Собственно я использую тот самый
fab
скрипт с изменённой командой запуска. Её я укажу чуть позже.Пакеты для работы
Selenium
тестов (ставятся через pip install
):selenium
django-selenium
Настройка
Сам автор
django-selenium
рекомендует использовать свой раннер тестов для запуска под Jenkins
, но так как оно описано — оно не заработало, а когда я его подправил и оно заработало, то не стало учитывать настройку PROJECT_APPS
для django-jenkins
, т.е. запускало абсолютно все тесты из всех пакетов, используемых в проекте. Потому я предлагаю вам свой раннер, который запускается django-jenkins
, прогоняет тесты которые положено для него, после чего уже запускает исключительно selenium
тесты из django-selenium
:# -*- coding: utf-8 -*-
from django_jenkins.runner import CITestSuiteRunner
from django_selenium.jenkins_runner import JenkinsTestRunner, SeleniumTestRunner
from django.test.testcases import TestCase
from django.test.simple import reorder_suite
class ProjectRunner(JenkinsTestRunner):
"""
Project test runner
"""
def __init__(self, **kwargs):
super(ProjectRunner, self).__init__(**kwargs)
self.selenium_only = True
def build_suite(self, test_labels, **kwargs):
suite = SeleniumTestRunner.build_suite(self, test_labels, **kwargs)
suite.addTest(CITestSuiteRunner.build_suite(self, test_labels, **kwargs))
return reorder_suite(suite, (TestCase,))
Положите этот код в файл
test_runner.py
в корне Вашего проекта (скажем проект называется «project»).Добавьте в настройки проекта:
SELENIUM_DISPLAY = ':99'
JENKINS_TEST_RUNNER = 'project.test_runner.ProjectRunner'
Запуск
В этом месте:
настройку проекта
Jenkins
следует немного подредактировать и заменить запускающую команду на:xvfb-run ./manage.py jenkins
В общем нужно поместить выполнение тестов в виртуальный фреймбуфер
X.org
, т.е. перед началом команды запускающей тесты нужно добавить xvfb-run
. В конце можете добавить список приложений, хотя это особого смысла не имеет, т.к. у нас есть работающая настройка PROJECT_APPS
.Вот и всё — удачных тестов!