Я пытаюсь запустить юнит-тест с Django 1.3. Обычно я использую MySQL в качестве своей базы данных, но так как это слишком медленно для раскрутки в течение одного юнит-теста, я использую Sqlite3.
Таким образом, чтобы переключиться на Sqlite3 только для моих юнит-тестов, в моих settings.py у меня есть:
import sys
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME':'/tmp/database.db',
'USER' : '',
'PASSWORD' : '',
'HOST' : '',
}
}
Когда я запускаю свой юнит-тест с python manage.py test myapp.Test.test_myfunc
, я получаю ошибку:
DatabaseError: no such table: django_content_type
Поиск в Google показывает, что существует несколько из возможных причин для этой ошибки , ни одна из которых не кажется мне применимой. Я не использую Apache, поэтому я не вижу, как разрешения будут проблемой. Файл /tmp/database.db создается, поэтому / tmp доступен для записи. Приложение django.contrib.contenttypes включено в мой INSTALLED_APPS.
Чего мне не хватает?
Редактировать: Я столкнулся с этой проблемой снова в Django 1.5, но ни одно из предложенных решений не работает.