我正在尝试将一个相当大的Django项目升级到最新发布的Django 1.4版本,并且在运行python manage.py test
时遇到了一些问题。
许多在Django 1.3中通过的内部测试现在失败了,出现了我无法解决的非常奇怪的消息。其中出现最多的是:
NoReverseMatch: u'admin' is not a registered namespace
这是针对django.contrib.auth
的密码更改测试而引发的问题,特别是其中之一:test_password_change_fails_with_mismatched_passwords (django.contrib.auth.tests.views.ChangePasswordTest)
。奇怪的是,命名空间已经正确注册并且应用程序运行正常。我按照“新”的方式导入了admin:
url(r'^admin/', include(admin.site.urls)),
当我特别搜索此错误时,我只能找到人们使用旧方案导入管理URL的情况,没有任何与这个问题相关的内容。我尝试逐个从INSTALLED_APPS中删除应用程序,但auth测试仍然无法通过。此外,当我从python manage.py shell加载Python解释器并执行reverse('admin:index')时,URL解析为/admin/而没有任何错误。我已经详细阅读了代码,但无法看出哪里会出错。
如我之前提到的,这不是唯一发生的错误。我还从test_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase)测试中获得AttributeError: AUTH_PROFILE_MODULE,尽管AUTH_PROFILE_MODULE在我的settings.py文件中定义。 Django自己的测试怎么可能失败呢?