Django / postgres setup для создания баз данных, для запуска тестов
Мои unittests простираются от django.test.TestCase
. Используя серверную часть SQLite3, они работают нормально.
Я хочу запустить их с бэкэндом PostgreSQL, и первое, что делают тесты, - это пытаются создать тестовую базу данных. Это не удается, так как у django нет разрешений на это. Я хочу настроить PostgreSQL / django так, чтобы эта операция была разрешена, но я не могу найти никакой документации о том, как это сделать.
Эти настройки используются для подключения к база данных (settings.py
):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'myppasss',
'HOST': 'localhost',
'PORT': '',
}
}
При запуске приложения django у меня всегда есть предварительно созданная база данных и пользователь, так что django может подключиться.
У меня есть два вопроса:
- какие настройки подключения используются для создания базы данных во время модульного теста? Насколько я понимаю, пользователь, которого django использует для подключения к базе данных приложения, не должен (и не должен) иметь права на создание базы данных.
- где все это описал? Самое близкое, что я нашел, - это здесь (
TEST
ключ в параметреDATABASES
config), но эти настройки в основном относятся к базам данных Oracle и имеют другое назначение.
1 ответ:
Django будет использовать те же настройки подключения, что и в вашем settings.py для тестов, но будет использоваться другая база данных (по умолчанию,
test_mydb
, где ваша обычная база данныхmydb
).Вы можете изменить права пользователя django на создание баз данных в оболочке psql. Смотрите этот связанный ответ для получения дополнительной информации.
=> ALTER USER myuser CREATEDB;
Я не знаю, можно ли ограничить разрешение, чтобы пользователь django мог только создавать базу данных
test_mydb
.