Django - указать базу данных для приборов TestCase
У меня есть две базы данных, которые использует мой сайт, и у меня есть приложение, которое использует их оба. Мне нужно написать TestCase, который загружает приборы для обеих баз данных. Я использую маршрутизатор DB, который отлично работает в процессе производства, но в рамках тестирования Django настаивает на использовании базы данных по умолчанию для всех приборов, даже для моделей, которые указывают другую базу данных. Как я могу объявить Django для запуска привязки к другой базе данных?
My TestCase - это список:
class VerifierTestCase(TestCase):
fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json']
multi_db = True
Ответы
Ответ 1
В Django есть ошибка, из-за которой он игнорирует указатели на основе имени, основанные на имени, если вы укажете все имя прибора.
поэтому если вы делаете fixtures = ["mydata.default.yaml", "mydata.myotherdatabase.yaml"]
Он загрузит оба светильника в базу данных по умолчанию.
Но если вы делаете fixtures = ['mydata']
Он будет загружаться правильно. Это также справедливо и для имен файлов dbengine (например, mydata.default.postgresql.sql
).
Ответ 2
Светильники ориентированы на определенные базы данных по имени файла. Это верно и в экземплярах TestCase, поскольку они просто вызывают команду loaddata.
См. https://docs.djangoproject.com/en/dev/ref/django-admin/#database-specific-fixtures