Отсутствует таблица при запуске Django Unittest с Sqlite3 - PullRequest
19 голосов
/ 07 сентября 2011

Я пытаюсь запустить юнит-тест с 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, но ни одно из предложенных решений не работает.

Ответы [ 11 ]

0 голосов
/ 12 ноября 2014

Мне пришлось добавить следующие строки после определения тестовой базы данных:

from django.core.management import call_command
call_command('syncdb', migrate=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...