Django_nose не загружает основные приборы, например django_site example.com запись или права администратора - PullRequest
2 голосов
/ 03 августа 2011

С текущей стабильной версией django_nose (0.1.3) модели даже не были правильно найдены и загружены, я получаю следующее исключение при запуске тестов:

django.db.utils.DatabaseError: (1146, "Table 'test_appdatabase.django_site' doesn't exist")

с помощью git-версии django_nose мне удалось правильно создать свои модели в тестовой базе данных, однако они все пусты, с помощью testrunner Django я загружаю некоторые базовые данные в таблицы, такие как таблицы django_site и auth_permission :

django_site
id      domain  name
1       example.com     example.com

Когда я запускаю набор тестов с установленной и установленной программой django_nose, я получаю следующее исключение:

DoesNotExist: Site matching query does not exist.

Есть идеи?


Обновление: работает с -v 2, похоже, что он запускает обработчики пост-синхронизации (syncdb) для приложений

Running post-sync handlers for application sites
Creating example.com Site object
Adding content type 'sites | site'
Adding permission 'sites | site | Can add site'
Adding permission 'sites | site | Can change site'
Adding permission 'sites | site | Can delete site'

Похоже, что они добавляются, но где-то они удаляются.


Дальнейшее обновление:

Глядя на журнал MySQL Query, последовательность событий

  1. Сделать syncdb в тестовой базе данных
  2. Обрезать каждую таблицу (почему ?, вот где моя проблема)
  3. Выполнить тесты

Пример усечения из журнала запросов:

TRUNCATE `django_site`

Почему таблицы усекаются? Неужели тесты не загрязняют друг друга, есть ли способ отключить это?


Я считаю, что это последнее обновление:

при использовании стандартного бегуна django происходит то же самое,

  1. таблицы созданы
  2. вставка данных после синхронизации
  3. таблицы усекаются
  4. Изменить таблицу, вызываемую для установки AUTO_INCREMENT = 1

За исключением следующего шага:

  1. Данные вставляются обратно в

    INSERT INTO django_site (domain, name) VALUES ('example.com', 'example.com')

Не уверен, почему это происходит здесь, но не с django_nose

Ответы [ 2 ]

1 голос
/ 03 августа 2011
  1. Является ли приложение sites в вашем INSTALLED_APPS?Бегущий по носу тестер расширяет тестовый джанго, который должен вызывать syncdb и собирать все ваши установленные приложения.
  2. Как выглядит ваш тестовый пример?django-nose не несет ответственности за загрузку ваших приборов (как и обычный тестер Django).Приборы загружаются django.test.TestCase.

Редактировать: все, что вы описываете, происходит в _fixture_setup() из TestCase Джанго.Усечение и такое происходит в flush, а затем настраиваются приборы.

https://github.com/django/django/blob/master/django/test/testcases.py#L258

0 голосов
/ 05 августа 2011

Разница в https://github.com/jbalogh/django-nose/issues/39 устраняет эту проблему.

...