При попытке параллельного запуска тестов возникают многочисленные проблемы.
Согласно документам, перед именем "test_" указывается имя базы данных, указанное в DATABASES. Я использовал имя "postgres", поэтому база данных, созданная при выполнении тестов, называется test_ postgres. При параллельном выполнении тестов создаются следующие базы данных (что ожидается): test_postgres_1 , test_postgres_2 , test_postgres_3 и test_postgres_4 . Однако при запуске всех тестов с параметром --parallel=4
каждый тест завершается неудачно со следующим сообщением: django.db.utils.OperationalError: FATAL: database "postgres_x" does not exist
где x может быть 1, 2, 3 или 4. Я вижу, что были созданы следующие базы данных: test_postgres_x
где x может быть 1, 2, 3 или 4. Откуда берется "postgres_x"? Почему к ним не добавляется «test_»?
Кроме того, если я вручную создаю ожидаемые базы данных postgres_x
(x = 1–4), миграции, примененные к «основной» базе данных, не применяется к клонам. Это приводит к таким ошибкам: django.db.utils.ProgrammingError: relation "users_user" does not exist
. Примерно 1/4 теста проходит при использовании 4 ядер.
Наконец, если я пытаюсь мигрировать postgres_x
с помощью migrate --database=postgres_x
, я получаю: django.db.utils.ConnectionDoesNotExist: The connection postgres_x doesn't exist
.
Я гарантировал, что все тесты изолированы только для того, чтобы я мог выполнять их параллельно. Что я должен делать?