8 сентября 2011 г.

Запускаем тесты для проекта, который использует Django 1.3 и django-celery

В оффициальной документации django-celery есть раздел о том, как правильно настроить Celery для тестирования с Django проектом, также там упоминается и о возможности использовании специального тест раннера из пакета djcelery.

Так вот, если вы используете Django 1.3 - забудьте про эту возможность до лучших времен. Ее использование черевато DeprecationWarning'ами и не совсем понятной работой (например, у меня --failfast вообще не работал).

Причина кроется в сообщении из подобного DeprecationWarning'a:

/path/to/site-packages/django/test/simple.py:369: DeprecationWarning: The run_tests() test runner has been deprecated in favor of DjangoTestSuiteRunner.
  DeprecationWarning

Т.е., начиная с версии 1.3 мы должны забыть о функциях тест раннерах и использовать только классы тест раннеры. И так как готового класса тест раннера для django-celery еще нет, то нам прийдется руками разместить те настройки, которые устанавливает run_tests перед своим запуском, а именно:

CELERY_ALWAYS_EAGER = True
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True

в test_settings модуль или куда-угодно еще. Ну и не забыть убрать djcelery.contrib.test_runner.run_tests из TEST_RUNNER.

blog comments powered by Disqus