Юнитестесты Django - Неправильно настроенная ошибка

Я пытаюсь написать тесты для моего модуля. Когда я бегу:

python manage.py test my_module

Я получаю сообщение:

django.core.exceptions.ImproperlyConfigured: Please fill out the database NAME in the settings module before using the database.

У меня пока нет никаких тестов, просто BaseTest, где я создаю пользователей, группы и назначаю разрешения.

Где может быть проблема? Сервер нормально работает, конфигурация вроде бы хорошая. Мне нужно определить настройки для теста?


Хорошо. Я думаю, что я знаю, в чем была проблема:] У меня были списки с разрешениями, хранящимися в другом модуле. Итак, я писал from module.perms import perms (обычный список питонов). Кажется, что python делает нечто большее, чем просто импортирует этот список из другого модуля в мой модуль. И это было причиной неудачи.

Решение: окружить код после определения списка:

if __name__ == "__main__":
   ...

Тогда все должно работать хорошо.

4 ответа

Решение

Хорошо. Я думаю, что я знаю, в чем была проблема:] У меня были списки с разрешениями, хранящимися в другом модуле. Таким образом, я писал из модуля perms для импорта module.perms (обычный список Python). Кажется, что python делает нечто большее, чем просто импортирует этот список из другого модуля в мой модуль. И это было причиной неудачи.

Решение: окружить код после определения списка:

if __name__ == "__main__":
   ...

Тогда все должно работать хорошо.

У вас должна быть настройка DATABASE в файле settings.py, а ваше приложение должно быть в установленных приложениях. Например:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sqlite',

Вот еще одно потенциальное решение для людей, которые находят это с помощью поиска:

Я пытался определить свой собственный TestRunner класс внутри моего файла настроек, что означало, что он должен был импортировать DjangoTestSuiteRunner, Этот импорт в верхней части файла вызвал ImproperlyConfigured ошибка. Перемещение пользовательского класса TestRunner в отдельный файл решило проблему.

python manage.py test не использует NAME база данных определена в settings.py DATABASES, Из документов -

Тесты, которым требуется база данных (а именно, модельные тесты), не будут использовать вашу "реальную" (производственную) базу данных. Для тестов создаются отдельные, пустые базы данных.

Независимо от того, пройдены тесты или нет, базы данных тестов уничтожаются после выполнения всех тестов.

По умолчанию тестовые базы данных получают свои имена, добавляя test_ к значению настроек NAME для баз данных, определенных в DATABASES. При использовании ядра базы данных SQLite тесты по умолчанию будут использовать базу данных в памяти (т. Е. База данных будет создана в памяти, полностью обходя файловую систему!). Если вы хотите использовать другое имя базы данных, укажите TEST_NAME в словаре для любой базы данных в DATABASES.

Ответить на ваш вопрос. Вы можете определить тестовую базу данных с помощью TEST_NAME установка. Но ты не должен этого делать.

Другие вопросы по тегам