django - указать базу данных для приборов TestCase - PullRequest
12 голосов
/ 03 ноября 2010

У меня есть две базы данных, которые использует мой сайт, и у меня есть приложение, которое использует их обе. Мне нужно написать TestCase, который загружает приборы для обеих баз данных. Я использую маршрутизатор БД, который отлично работает на производстве, но в рамках тестирования Django настаивает на использовании базы данных «по умолчанию» для всех приборов, даже для моделей, которые указывают другую базу данных. Как я могу сказать Django запустить осветитель для другой базы данных?

Мой список TestCase определен:

class VerifierTestCase(TestCase):
    fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json']
    multi_db = True

Ответы [ 2 ]

4 голосов
/ 30 ноября 2011

На самом деле в Django есть ошибка, из-за которой он игнорирует основанные на имени указатели, специфичные для БД, если вы укажете полное имя прибора.Он загрузит оба прибора в базу данных по умолчанию.

Но если вы сделаете fixtures = ['mydata']

, он загрузится правильно.Это также верно для имен файлов, специфичных для dbengine (например, mydata.default.postgresql.sql).

1 голос
/ 22 июля 2011

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

См. https://docs.djangoproject.com/en/dev/ref/django-admin/#database-specific-fixtures

...