/ / Настройка на Django / postgres за създаване на база данни, за тестове - python, django, unit-testing

Django / postgres настройка за създаване на база данни, за тестване на тестове - python, django, unit-testing

Моите единици се разпростират от 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 за отговор № 1

Django ще използва същите настройки за връзка, както във вашите настройки.py за тестове, но ще използва различна база данни (по подразбиране, test_mydb където е редовната база данни mydb).

Можете да промените потребителските разрешения на django, за да създавате бази данни в черупката на psql. виждам този свързан отговор за повече информация.

=> ALTER USER myuser CREATEDB;

Не знам дали е възможно да се ограничи разрешението, така че потребителят на django да може да създава базата данни test_mydb.