Ложные сбои в django.contrib.messages.tests при запуске manage.py - PullRequest
4 голосов
/ 06 августа 2010

Я недавно добавил аутентификацию (конечно, через django.contrib.auth) в свое приложение вместе с соответствующими ссылками "вход / выход" на мой base.html.

Проблема возникает, когда я запускаю manage.py тесты и получаю 4 ошибки, все из django.contrib.messages.tests:

ERROR: test_middleware_disabled_anon_user (django.contrib.messages.tests.cookie.CookieTest)
ERROR: test_middleware_disabled_anon_user (django.contrib.messages.tests.fallback.FallbackTest)
ERROR: test_middleware_disabled_anon_user (django.contrib.messages.tests.user_messages.LegacyFallbackTest)
ERROR: test_middleware_disabled_anon_user (django.contrib.messages.tests.session.SessionTest)

Все с той же ошибкой:

TemplateSyntaxError: Caught NoReverseMatch while rendering: Reverse for 'django.contrib.auth.views.login' with arguments '()' and keyword arguments '{}' not found.

В manage.py shell это работает:

>>> from django.core.urlresolvers import reverse
>>> reverse('django.contrib.auth.views.login')
'/signin/'

Однако это не так:

>>> reverse('django.contrib.auth.views.login', (), {})
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/dave/Dropbox/Projects/statbooks.co.uk/lib/python2.6/site-packages/django/core/urlresolvers.py", line 350, in reverse
    *args, **kwargs)))
  File "/Users/dave/Dropbox/Projects/statbooks.co.uk/lib/python2.6/site-packages/django/core/urlresolvers.py", line 296, in reverse
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'django.contrib.auth.views.login' with arguments '()' and keyword arguments '{}' not found.

Комментируя теги {% url %} из моего base.html, тесты проходят успешно.

Что вызывает это?

1 Ответ

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

В этом билете Django есть несколько предложений по обходным путям и ссылки на них: http://code.djangoproject.com/ticket/11077 Мне нравится вот что: http://groups.google.com/group/django-developers/msg/ec7508651e9e9fb8. Подводя итог, он разделяет встроенные тесты и тесты приложений,затем переопределяет тест manage.py для запуска только тестов приложения.

Ни одно из этих предложений не решает основную проблему (что все модульные тесты должны быть в состоянии выполняться, даже если базовые шаблоны используют тег {% url%}).

...