Django игнорирует мои фикстуры TestCase

У меня Джанго 1.4. В моем test.py у меня есть необходимый импорт TestCase:

from django.test import TestCase

Чтобы изолировать проблему, я добавил строку:

fixtures = ['westeros']

к тестовому примеру по умолчанию, т.е.

class SimpleTest(TestCase):
    fixtures = ['westeros']

    def test_basic_addition(self):
        """
        Tests that 1 + 1 always equals 2.
        """
        self.assertEqual(1 + 1, 2)

Используя данные дампа django-admin.py, я создал файл приспособления с именем «westeros» в каталоге «клиенты/фикстуры», где «клиенты» — это приложение, указанное в settings.INSTALLED_APPS.

Когда я запускаю тест, при любой детализации Django просто игнорирует фикстуру и проходит тест test_basic_addition. Нет ошибок, нет загрузки прибора. Как будто импорта TestCase нет. Любые идеи о том, что может быть не так или как это отладить?


person Ghopper21    schedule 08.08.2012    source источник
comment
Вы пробовали использовать loaddata? docs.djangoproject.com/en/dev/ref /джанго-админ/   -  person dani herrera    schedule 08.08.2012


Ответы (2)


Можно опустить расширение при определении fixtures, как вы это сделали, т.е.

fixtures = ['westeros']

Однако сам файл приспособления должен иметь расширение, соответствующее его сериализатору, например, westeros.json, westeros.json.zip или westeros.xml для json, заархивированного json или xml соответственно.

person Alasdair    schedule 08.08.2012
comment
ДА!!! Спасибо. В этом была проблема. Это сработало, когда я переименовал вестерос в вестерос.json. Я до сих пор не понимаю, почему Джанго хранит полное молчание по этому поводу. Несмотря на то, что фикстура теперь загружается, она по-прежнему ничего не говорит, даже при уровне детализации 3. - person Ghopper21; 09.08.2012

Где находится ваш файл westeros?

Он должен находиться либо в каталоге fixtures внутри приложения, либо в каталоге, указанном FIXTURE_DIRS в вашем файле settings.py.

Вы можете запустить тесты с помощью verbosity=2, чтобы получить полный вывод. https://docs.djangoproject.com/en/1.0/ref/django-admin/#test

Ваш файл приборов называется westeros? или у него есть расширение файла?

Как вы видите, Django будет молча терпеть неудачу при загрузке фикстуры. (по крайней мере, до 1.3, я еще не использовал фикстуры в новой версии 1.4). Но на самом деле вы не проверяете, загружаются ли приборы. Добавьте self.assertGreater(YourModel.objects.all(), 0) или что-то еще, чтобы убедиться, что объектов нет, или запустите отладчик и начните запрашивать некоторые из ваших моделей.

person dm03514    schedule 08.08.2012
comment
Спасибо. Ответы: (1) файл вестероса находится в каталоге customers/fixtures, где customers — одно из моих установленных приложений; (2) я работал с многословием 2 (и 3); (3) да, я убедился, что прибор не загружается (просто не показал этого в своем вопросе). - person Ghopper21; 09.08.2012