Что делать, если собственные модульные тесты стволов Django не пройдены? - PullRequest
2 голосов
/ 28 октября 2009

Я работаю за пределами магистрали Django и замечаю, что модульные тесты для модулей Django в магистрали всегда имеют сбои. Должен ли ствол Django проходить все свои юнит-тесты?

Вот некоторые примеры ошибок:

======================================================================
ERROR: test_password_change_fails_with_invalid_old_password (django.contrib.auth.tests.views.ChangePasswordTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/michael/django/trunk/django/contrib/auth/tests/views.py", line 156, in test_password_change_fails_with_invalid_old_password
    'new_password2': 'password1',
  File "/Users/michael/django/trunk/django/test/client.py", line 318, in post
    response = self.request(**r)
  File "/Users/michael/django/trunk/django/core/handlers/base.py", line 87, in get_response
    response = middleware_method(request, callback, callback_args, callback_kwargs)
  File "/Users/michael/Documents/workspace/drchrono/drchrono_middleware/drchrono.py", line 31, in process_view
    setattr(request, 'currentDoctor', request.user.get_profile().doctor) #Default is to have currentDoctor be default for logged in user.
  File "/Users/michael/django/trunk/django/contrib/auth/models.py", line 285, in get_profile
    self._profile_cache = model._default_manager.get(user__id__exact=self.id)
  File "/Users/michael/django/trunk/django/db/models/manager.py", line 119, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/Users/michael/django/trunk/django/db/models/query.py", line 298, in get
    % self.model._meta.object_name)
DoesNotExist: UserProfile matching query does not exist.

Я только что понял, что во многих ошибках упоминается отсутствующий UserProfile и что у меня есть пользовательский объект UserProfile, который я создаю при создании нового пользователя через процесс веб-регистрации (но он не создается при создании экземпляра нового объекта User в администраторе, или я приду через код.) Так что, возможно, это ошибка моего приложения в том, что я не создал UserProfiles для пользователей, не созданных через графический интерфейс. Как я могу создать UserProfile для каждого созданного объекта User? Вы monkeypatch метод new () класса User?

Ответы [ 3 ]

3 голосов
/ 28 октября 2009

Ствол должен пройти все свои испытания. Если у вас постоянные сбои, возможно, ваша среда в некотором роде необычна. Если разные тесты не проходят в разное время, вы можете просто наблюдать типичную суматоху в багажнике.

Список django-developers довольно отзывчив на подобные вещи. Если вы спросите профессионально (например, не «парни, ваш код sux! Он даже не проходит свои собственные тесты !!»), они помогут вам выяснить, в чем проблема.

2 голосов
/ 28 октября 2009

Несколько недель назад в списке разработчиков было отмечено (см. эту ветку ), что Django из коробки не проходит все свои тесты. Однако это было связано с отсутствием определенных шаблонов, а не таблиц базы данных. Там что-нибудь звонит в колокол?

0 голосов
/ 01 ноября 2010

Я использую django 1.2.3 (стабильный релиз, а не транк). Когда я создаю пустое приложение и запускаю ./manage.py test, у меня три теста не пройдены, один из которых указан выше В моем случае, однако, ошибка связана с отсутствующим шаблоном: TemplateDoesNotExist: registration/password_change_form.html. Вот почему я думаю (как и Даниэль), это действительно проблема с отсутствующими шаблонами.

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