Как правильно установить django-nose?

У меня проблемы с запуском django-nose.

Согласно инструкциям по установке, я установил:

  1. Бег pip install django-nose
  2. Добавление 'django_nose' в INSTALLED_APPS в settings.py (в том числе в качестве самого последнего приложения, в случае возможных проблем с порядком приложений)
  3. Добавление 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, установленной в виртуальном окружении.

Что я делаю неправильно? Если ничего, как мне отладить эту проблему установки?


person Ghopper21    schedule 31.08.2012    source источник
comment
У меня такая же проблема. После запуска команды nosetests из корня проекта теперь работает django_nose. Однако он по-прежнему не отображается в списке приложений при запуске ./manage.py syncdb. Я понятия не имею, почему это работает!   -  person Karim Sonbol    schedule 07.07.2014


Ответы (4)


Похоже, это проблема порядка приложений, цитата из руководства django-nose:

Использование с югом

South устанавливает собственную тестовую команду, отключающую миграцию во время тестирования. Убедитесь, что django-nose идет после юга в INSTALLED_APPS, чтобы использовалась тестовая команда django_nose.

person Fedor Gogolev    schedule 31.08.2012
comment
Не боюсь. Я подозревал порядок приложений, поэтому я попытался поставить django_nose самым последним в INSTALLED_APPS, но безрезультатно. - person Ghopper21; 31.08.2012

Если вы внимательно прочитали документы на github, проблема в том, что когда south установлен, вам нужно поместить django_nose ниже south, подробнее.

Таким образом, ваш INSTALLED_APPS в файле settings.py должен выглядеть примерно так:

INSTALLED_APPS = (
.....other apps...
....

south,
django_nose,
) 
person apcelent    schedule 19.09.2012
comment
Эй, спасибо, но я уже пробовал это, в том числе с django_nose самым последним в INSTALLED_APPS. - person Ghopper21; 19.09.2012

Я тоже столкнулся с подобной проблемой при использовании kombu.transport.django в INSTALLED_APPS. Я получил сообщение об ошибке «Неправильно настроено: в приложении с меткой 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'
) 

Это помогло решить проблему. Миграции прошли успешно. Я использовал Джанго 1.5.

person Nithya    schedule 18.03.2013

Попробуйте поместить приложения, которые вы хотите протестировать, в PROJECT_APPS в настройках; он пытается протестировать django_nose и создать для него модели, когда у него нет файла models.py.

person Darren    schedule 23.12.2013