Моите единици се разпростират от django.test.TestCase
, Използвайки SQLite3 бекенда, те се изпълняват добре.
Искам да ги стартирам с Backg и 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 и имат различна цел.
Отговори:
5 за отговор № 1Django ще използва същите настройки за връзка, както във вашите настройки.py за тестове, но ще използва различна база данни (по подразбиране, test_mydb
където е редовната база данни mydb
).
Можете да промените потребителските разрешения на django, за да създавате бази данни в черупката на psql. виждам този свързан отговор за повече информация.
=> ALTER USER myuser CREATEDB;
Не знам дали е възможно да се ограничи разрешението, така че потребителят на django да може да създава базата данни test_mydb
.