Как использовать существующую БД для модульного тестирования в Django?

Я создал REST-API приложение, используя Django Rest Framework.

API просто конвертирует данные из существующей БД Postgres только для чтения в REST- API, который будет потребляться внешним интерфейсом.

Теперь мне нужно написать несколько модульных тестов для тестирования приложения. Поскольку в приложении много таблиц и представлений, я не могу создать макет данных и провести тестирование.

Есть ли способ запускать тесты в Django, используя существующую БД (Postgres) без создания макетов данных?

Примечание: Я прочитал много постов SO, связанных с моей проблемой, но ни один из них не сработал, так как они были для старых версий Django.

Вы не можете использовать команду Django test для просмотра производственных данных. Она всегда создает пустую базу данных, которая заполняется из фикстур в TestCase.

Это не очень хорошая практика и ее не следует применять. Но если вы хотите добиться того, о чем вы заявили, вы можете попробовать следующее -

DATABASES = {
  'default': {
     ...
     'TEST': {
        'NAME': 'your prod db'
     }
}

в вашем файле settings.py. (Это может помешать работе вашей производственной базы данных)

Я предлагаю вам использовать гипотезы и фабрики для получения данных для написания тестов, так как это поможет вам в долгосрочной перспективе и будет надежным.

То, что вы предлагаете, не будет называться тестом. Поэтому вам будет полезно пересмотреть вопрос о написании тестов для вашего приложения.

Вы можете сделать что-то вроде этого в файле settings.py

import sys
if 'test' in sys.argv:
    DATABASES['default'] = {
        # your default database credentials
    }
Вернуться на верх