не загружайте фиксацию initial_data.json при тестировании - PullRequest
14 голосов
/ 10 ноября 2010

Я тестирую приложение django, написанное не мной, которое использует два прибора: initial_data.json и testing.json. Оба файла фикстур содержат противоречивые данные (выдают ошибку целостности).

Для тестирования я указал TestCase.fixtures = ['testing.json'], но initial_data.json также загружен.

Как мне избежать загрузки initial_data.json (не переименовывая) в тестовый набор?

Ответы [ 3 ]

6 голосов
/ 10 ноября 2010

Цитирование с сайта Django:

Если вы создаете прибор с именем исходные_данные. [xml / yaml / json], что прибор будет загружен каждый раз, когда вы запустить syncdb. Это крайне удобно, но будь осторожен: помни что данные будут обновляться каждый раз вы запускаете syncdb. Так что не используйте initial_data для данных, которые вы хотите редактирования.

Так что я думаю, что нет никакого способа сказать "хорошо, не загружайте исходные данные только один раз". Возможно, вы могли бы написать короткий скрипт bash, который бы переименовал файл. В противном случае вам придется копаться в коде Django.

Подробнее здесь: http://docs.djangoproject.com/en/dev/howto/initial-data/#automatically-loading-initial-data-fixtures

2 голосов
/ 06 февраля 2014

Если вы хотите иметь таблицы без начальных данных, этот код поможет вам:

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

2 голосов
/ 09 февраля 2013

Возможно, вы захотите подумать о том, действительно ли ваше приложение нуждается в initial_data.json. Нетрудно «вручную» загрузить ваши производственные данные с помощью ./manage.py loaddata production.json после запуска syncdb (как часто вы запускаете syncdb в производственном процессе?) *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...