4

最近、base.html への適切な「サインイン」/「サインアップ」リンクとともに、(もちろん django.contrib.auth を介して) 認証をアプリケーションに追加しました。

テストを実行すると問題がmanage.py発生し、django.contrib.messages.tests から 4 つのエラーが発生します。

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.

私のbase.html{% url %}からタグをコメントアウトすると、テストに合格します。

何が原因ですか?

4

1 に答える 1

3

この Django チケットとその中のリンクには、いくつかの回避策の提案があります: http://code.djangoproject.com/ticket/11077 msg/ec7508651e9e9fb8 . 要約すると、組み込みテストとアプリ テストを分割し、manage.py テストをオーバーライドしてアプリ テストのみを実行します。

これらの提案のいずれも、根本的な問題 (基本テンプレートが {% url %} タグを使用している場合でも、すべての単体テストを実行できるはずです) を解決するものではありません。

于 2010-11-10T18:40:21.387 に答える