Не загружайте "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 снова без загрузки исходных данных.