Как пропустить создание одной из тестовых баз данных в Django - PullRequest
0 голосов
/ 28 июня 2018

У нас есть две базы данных, с которыми мы работаем в нашем приложении Django: «транзакционная» и «аналитическая» (служащая хранилищем данных). «Транзакционный» создается с использованием моделей django, а «аналитический» - с использованием наших пользовательских сценариев, содержащих необработанные sql множественных объединений таблиц «транзакционных».

Когда мы запускаем тесты для приложения django, обе базы данных получают свои версии тестовых аналогов, скажем, "test_transactional" и "test_analytical". Создание «test_transactional» в порядке, но мы бы хотели, чтобы создание «test_analytical» было пропущено, поскольку оно будет создано и заполнено нашими пользовательскими сценариями.

Фрагмент из бревен Дженкинса:

python manage.py test --keepdb cis.tests.test_views --  
noinput --settings=strainprint.settings.local --verbosity=2
...
Using existing test database for alias 'analytics' 
('test_strainprint_analytics')...
...
Synchronizing apps without migrations:
Creating tables...
Creating table django_admin_log
Creating table auth_permission
...

Есть ли способ добиться этого в Джанго? Мы используем django 1.10.

1 Ответ

0 голосов
/ 27 ноября 2018

Это не особенно безопасный способ сделать это, так как семантика этого параметра конфигурации может измениться, но вы можете объявить одну базу данных «репликой» другой:

DATABASES = {
    'default': {
        'NAME': 'transactional',
         ...
    },
    'analytical': {
        'NAME': 'analytical',
        ...
        'TEST': {
            'MIRROR': 'default',
        },
    }
}

Параметр конфигурации MIRROR задокументирован здесь: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#testing-primary-replica-configurations

Соответствующий источник Django находится здесь: https://github.com/django/django/blob/master/django/test/utils.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...