4

我最近向我的应用程序添加了身份验证(当然是通过 django.contrib.auth),以及指向我的 base.html 的适当“signin”/“signup”链接。

当我运行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 %}标签会使测试通过。

这是什么原因造成的?

4

1 回答 1

3

此 Django 票证和其中的链接有几个解决方法的建议:http ://code.djangoproject.com/ticket/11077我喜欢的是:http ://groups.google.com/group/django-developers/味精/ec7508651e9e9fb8。总而言之,它将内置测试和应用程序测试分开,然后覆盖 manage.py test 以仅运行应用程序测试。

这些建议都没有解决根本问题(即使基本模板使用 {% url %} 标签,所有单元测试也应该能够运行)。

于 2010-11-10T18:40:21.387 回答