Тестирование Django: Произошла ошибка при создании тестовой базы данных: база данных "имя_базы_данных" уже существует - PullRequest
3 голосов
/ 15 апреля 2019

У меня проблема с тестированием. Я пишу тесты впервые, и у меня проблема.

Я только что создал тестовую папку внутри моего приложения users и test_urls.py для тестирования URL.

Когда я печатаю:

python manage.py test users

Там написано:

Создание тестовой базы данных для псевдонима 'default' ... Произошла ошибка при создании тестовая база данных: база данных "имя_базы_данных" уже существует

Введите «да», если вы хотите попробовать удалить тестовую базу данных 'database_name' или 'no' для отмены:

Что это значит? Что произойдет, если я введу «да»? Я теряю все мои данные в базе данных?

1 Ответ

4 голосов
/ 15 апреля 2019

При тестировании Django создает тестовую базу данных для работы, чтобы ваша база данных разработки не была загрязнена. В сообщении об ошибке говорится, что Django пытается создать тестовую базу данных с именем "database_name" и эта база данных уже существует. Вам следует проверить таблицы программного обеспечения базы данных, которое вы используете, и проверить, что находится в database_name, возможно, оно было создано по ошибке.

Если вы введете yes, база данных database_name будет удалена, и маловероятно, что вы сможете восстановить данные . Поэтому постарайтесь сначала понять, что происходит.

Вы должны установить имя тестовой базы данных в settings.py. В настройках DATABASE есть специальный TEST словарь для этого:

settings.py

...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'USER': 'mydatabaseuser',
        'NAME': 'mydatabase',
        'TEST': {
            'NAME': 'mytestdatabase',
        },
    },
}
...

По умолчанию префикс test_ добавляется к имени вашей базы данных разработки. Вы должны проверить свой settings.py, чтобы проверить, что происходит.

Из документов :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...