Pytest django - несколько приложений, несколько баз данных - невозможно получить доступ к какой-либо базе данных, кроме db по умолчанию - PullRequest
0 голосов
/ 05 мая 2020

Проблема

У меня есть проект Django (1.8), в котором запущены 2 приложения: App1, App2. Оба приложения работают со своими собственными базами данных: app1db и app2db, разделяя defaultdb для пользователей и групп. Я пытаюсь интегрировать pytest- django как часть модульного тестирования. Здесь я столкнулся с проблемой, так как Pytest не поддерживает несколько баз данных.

Мой вариант использования: модульные тесты мне понадобятся только в app1, и я почти уверен, что они мне не понадобятся. app2. И я могу издеваться над объектами моих пользователей и групп из defaultdb для этих модульных тестов, и мне не понадобится доступ к defaultdb. Но проблема в том, что я всегда вижу, что модульные тесты обращаются к defaultdb, и я не вижу способа сделать app1db доступным из модульных тестов. Когда я пытаюсь получить доступ к любому объекту формы app1db, я получаю следующую ошибку:

E ProgrammingError: отношение «app1_table» не существует E LINE 1: INSERT INTO «app1_table» («field1», «field2», "... E ^

Настройки базы данных

    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'postgres',
        'NAME': 'defaultdb',
        'PASSWORD': 'pass',
        'HOST': localhost,
        },
    'app1': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'app1db',
        'USER': 'postgres',
        'PASSWORD': 'pass',
        'HOST': localhost,
    },
    "app2": {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'app2db',
        'USER': 'postgres',
        'PASSWORD': 'pass',
        'HOST': localhost,
    },

Как сделать так, чтобы мой pytest просто искал app1db, игнорируя все остальные БД?

...