2010-08-06 86 views
4

我最近通過適當的「登錄」/「註冊」鏈接向我的應用程序添加了身份驗證(當然是通過django.contrib.auth)到我的base.html。在運行manage.py時測試django.contrib.messages.tests時發生虛假故障

問題是當我運行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. 

從我的base.html註釋掉{% url %}標記使測試通過。

這是什麼造成的?

+0

請指定您的Django版本... – 2010-08-06 14:33:01

+0

在Django SVN([trunk/django/core/urlresolvers.py](http://code.djangoproject.com/browser/django/trunk/django/core/urlresolvers。 py)第337行),簽名是'reverse(viewname,urlconf = None,args = None,kwargs = None,prefix = None,current_app = None)'。既然你沒有看到'urlconf =()'和'args = {}',我知道那不是你正在使用的'reverse'。 – 2010-08-06 14:42:36

+0

我正在使用Django 1.2.1 – 2010-08-06 14:49:19

回答

3

在此Django標籤和其中的鏈接中有幾種解決方法的建議:http://code.djangoproject.com/ticket/11077我喜歡的是:http://groups.google.com/group/django-developers/msg/ec7508651e9e9fb8。總而言之,它分割了內置的測試和應用程序測試,然後重寫manage.py測試來運行應用程序測試。

這些建議都沒有解決底層問題(即使基本模板使用{%url%}標記,所有單元測試也應該能夠運行)。

+0

不理想,但是一個很好的解決方法。謝謝! – 2010-11-11 13:39:24