2012-04-28 5 views
6

Итак, я экспериментирую с введением модульных тестов selenium в django 1.4 в нескольких проектах, над которыми я работаю.Лучшая практика для проведения тестов на селен и модульных испытаний

Стандартный способ запуска моих модульных тестов - это просто сделать ./manage.py test, и я использую django-ignoretests, чтобы исключить конкретные приложения django, которые я не хочу тестировать (при необходимости).

Однако, есть способ настроить мой проект, так что я могу решить, чтобы запустить только тестов селена, когда я хочу и иметь ./manage.py test запускать только стандартные модульные тесты.

Каковы наилучшие методы для проведения сегрегации и организации испытаний селена и стандартных модульных испытаний?

ответ

5

Вы всегда можете сгруппировать все ваши тесты селена под единым пакетом myapp/selenium_tests/ (как описано здесь https://stackoverflow.com/a/5160779/1138710, например), а затем запустить manage.py test myapp.selenium_tests и группа остальных тестов по myapp/other_tests сказать.

В противном случае, я полагаю, вы могли бы написать тест бегун, который проверяет для каждого тестового класса черпает ли он из LiveServerTestCase (см Документов: https://docs.djangoproject.com/en/dev/topics/testing/#defining-a-test-runner)

+0

Как тесты Селена, как правило, являются функциональными, я стараюсь сделать то же самое, сохраняя их в отдельном пакете, а также возможность пропустить их (http://stackoverflow.com/a/10743466/4281). Мне нравится идея тестового бегуна, но в некоторых случаях тесты не могут быть потомком LiveServerTestCase (что является еще одной проблемой). –

5

Для тестовых классов в вопросе, я добавил следующий декоратор:

from django.conf import settings 
@unittest.skipIf(getattr(settings,'SKIP_SELENIUM_TESTS', False), "Skipping Selenium tests") 

Затем пропустить эти тесты добавить в файл настроек: SKIP_SELENIUM_TESTS = True

Это может быть легко обернутой в подкласс LiveServerTestCase или простой декоратор , Если бы у меня было это в более чем одном месте, это было бы уже.

Смежные вопросы