2013-03-25 7 views
4

У меня есть существующая база данных «A» с загруженными данными, которые являются частью другого проекта, с которым я интегрирую. Я использую поддержку нескольких баз данных Django и сохраняю то, что мне нужно, чтобы сохранить в моей базе данных «B», который моделируется Django.Django не создавать тестовую базу данных для exsting one

Теперь я хотел бы запустить тесты, которые создают мне две тестовые базы данных. Проблема заключается в том, что тестовая база данных «А» не имеет таблиц или данных.

Есть ли способ, чтобы избежать создания тестовой базы данных для «A» (который является только для чтения без производственной базы данных) и непосредственно использовать «»?

ответ

2

Если я правильно читаю django.test.simple.DjangoTestSuiteRunner.setup_databases, вы можете избежать создания тестовой базы данных, указав параметр 'TEST_MIRROR' для своей базы данных.

Опция предназначена для использования testing master/slave configuration, но вы можете достичь желаемого эффекта, если вы установите зеркало таким же базы данных, как тот, который вы настраиваете опцию на:

DATABASES = { 
    'A': { 
     'ENGINE': ..., # standard configuration goes here 
     'TEST_MIRROR': 'A', 
    }, 
    'B': { 
     'ENGINE': ..., # no TEST_MIRROR, a test database will be created for B 
    } 
} 

Нет тест будет создана база данных для «A», вместо этого он будет заменен на его TEST_MIRROR, который также является «», так что тесты будут работать на «A» и «test_B», как предполагалось.

+0

Я не знаю, было ли исправлено в новых версиях (здесь Django 1.4.8), но тестовый бегун все еще пытается сбросить 'A', уничтожая все данные. – Izkata