Как правильно установить django-nose?
У меня проблемы с запуском носа.
Согласно инструкции по установке, я установил:
- Бег
pip install django-nose
- Добавление
'django_nose'
вINSTALLED_APPS
в settings.py (в том числе в самом последнем приложении, в случае возможных проблем с порядком приложений) - Добавление
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
в settings.py
Когда я запускаю тест, т.е. manage.py test
, Я получил:
django.db.utils.DatabaseError: no such table: django_content_type
Я решил, что мне нужно синхронизировать базу данных. Я использую Юг. Когда я использую manage.py syncdb
, django_nose
не отображается ни в списке синхронизированных приложений, ни в списке приложений "Не синхронизировано (использовать миграции)".
Наконец, когда я пытаюсь синхронизироваться с югом, так или иначе, т.е. manage.py schemamigration django_nose --initial
, Я получил:
django.core.exceptions.ImproperlyConfigured: App with label django_nose is missing a models.py module.
У меня Django 1.4 с Южной версией 0.7.5 установлен в virtualenv.
Что я делаю неправильно? Если ничего, как мне отладить эту проблему установки?
4 ответа
Похоже, это проблема заказа приложений, цитата из руководства django-nose:
Использование с Югом
South устанавливает собственную тестовую команду, которая отключает миграции во время тестирования. Убедитесь, что django-nose идет после юга в INSTALLED_APPS, чтобы использовалась тестовая команда django_nose.
Если вы внимательно прочитаете документы на github, проблема в том, что когда юг установлен, вам нужно поместить django_nose ниже юга, читайте дальше.
Так что ваш INSTALLED_APPS в файле settings.py должен выглядеть примерно так:
INSTALLED_APPS = (
.....other apps...
....
south,
django_nose,
)
Попробуйте поместить приложения, которые вы хотите протестировать, в PROJECT_APPS в ваших настройках; он пытается протестировать django_nose и генерировать модели для него, когда у него нет файла models.py.
Я тоже столкнулся с подобной проблемой при использовании kombu.transport.django в INSTALLED_APPS. Я получил сообщение об ошибке: "ImproperlyConfigured: в приложении с меткой django отсутствует модуль models.py.". Похоже, порядок на юге имеет значение. Что я сделал, так это положил юг в самый низ INSTALLED_APPS,
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'djcelery',
'kombu.transport.django',
'sdm',
'cycletel_admin',
'django.contrib.admin',
'lettuce.django',
'south'
)
Это помогло решить проблему. Миграции прошли успешно. Я использовал Django 1.5