Не загружайте "initial_data.json" при тестировании
Я тестирую приложение djang, не написанное мной, которое использует два прибора: initial_data.json и testing.json. Оба файла архива содержат конфликтующие данные (бросая ошибку целостности).
Для тестирования я указал TestCase.fixtures = ['testing.json'], но также загружен файл initial_data.json.
Как я могу избежать загрузки initial_data.json(не переименовывая его) в тестовый файл?
Ответы
Ответ 1
Цитата из Django Website:
Если вы создадите прибор с именем initial_data. [xml/yaml/json], что прибор будет загружаться каждый раз, когда вы запустить syncdb. Это очень удобно, но будьте осторожны: помните что данные будут обновляться каждый время запуска syncdb. Поэтому не используйте initial_data для данных, которые вы хотите редактирования.
Так что, я думаю, нет никакого способа сказать "хорошо, не загружайте начальные данные только один раз". Возможно, вы могли бы написать короткий bash script, который переименовал бы файл. В противном случае вам придется копаться в коде Django.
Дополнительная информация здесь: http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures
Ответ 2
Возможно, вам захочется подумать о том, действительно ли initial_data.json
то, что действительно нужно вашему приложению. Не сложно "вручную" загрузить ваши производственные данные с помощью ./manage.py loaddata production.json
после запуска syncdb
(как часто вы запускаете syncdb
в процессе производства?), И это значительно облегчило бы загрузку вашего тестового оборудования.
Ответ 3
Если вы хотите иметь таблицы без начальных данных, этот код поможет вам:
edit tests.py:
from django.core import management
class FooTest(TestCase):
@classmethod
def setUpClass(cls):
management.call_command('flush', interactive=False, load_initial_data=False)
это приведет к удалению ваших данных и syncdb снова без загрузки исходных данных.