我创建了一个全新的django项目,除了为DATABASE_USER,DATABASE_ENGINE,DATABASE_NAME和DATABASE_PASSWORD提供值以及django auth测试失败之外,几乎没有任何内容。这怎么可能呢?
我也尝试按django: failing tests from django.contrib.auth
的建议添加TEMPLATE_CONTEXT_PROCESSORS以下是我输入的内容:
$ django-admin --version
1.1.1
$ python --version
Python 2.5.5
$ django-admin startproject junk
$ cd junk
$ vim settings.py #edit DATABASE_USER, DATABASE_ENGINE, DATABASE_NAME,DATABASE_PASSWORD
$ ./manage.py test
Creating test database...
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Installing index for auth.Permission model
Installing index for auth.Message model
EE..E...EEEEEEE..................
======================================================================
ERROR: test_password_change_fails_with_invalid_old_password (django.contrib.auth.tests.views.ChangePasswordTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 156, in test_password_change_fails_with_invalid_old_password
'new_password2': 'password1',
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/decorators.py", line 78, in __call__
return self.view_func(request, *args, **kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 160, in password_change
}, context_instance=RequestContext(request))
File "/usr/lib/pymodules/python2.5/django/shortcuts/__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 103, in render_to_string
t = get_template(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_change_form.html
======================================================================
ERROR: test_password_change_fails_with_mismatched_passwords (django.contrib.auth.tests.views.ChangePasswordTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 167, in test_password_change_fails_with_mismatched_passwords
'new_password2': 'donuts',
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/decorators.py", line 78, in __call__
return self.view_func(request, *args, **kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 160, in password_change
}, context_instance=RequestContext(request))
File "/usr/lib/pymodules/python2.5/django/shortcuts/__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 103, in render_to_string
t = get_template(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_change_form.html
======================================================================
ERROR: Logout without next_page option renders the default template
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 216, in test_logout_default
response = self.client.get('/logout/')
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 281, in get
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 225, in request
response = self.handler(environ)
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 69, in __call__
response = self.get_response(request)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 134, in get_response
return self.handle_uncaught_exception(request, resolver, exc_info)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 165, in handle_uncaught_exception
callback, param_dict = resolver.resolve500()
File "/usr/lib/pymodules/python2.5/django/core/urlresolvers.py", line 266, in resolve500
return self._resolve_special('500')
File "/usr/lib/pymodules/python2.5/django/core/urlresolvers.py", line 255, in _resolve_special
callback = getattr(self.urlconf_module, 'handler%s' % view_type)
AttributeError: 'module' object has no attribute 'handler500'
======================================================================
ERROR: test_confirm_complete (django.contrib.auth.tests.views.PasswordResetTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 107, in test_confirm_complete
url, path = self._test_confirm_start()
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 67, in _test_confirm_start
response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 99, in password_reset
form.save(**opts)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/forms.py", line 125, in save
t = loader.get_template(email_template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_email.html
======================================================================
ERROR: test_confirm_different_passwords (django.contrib.auth.tests.views.PasswordResetTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 122, in test_confirm_different_passwords
url, path = self._test_confirm_start()
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 67, in _test_confirm_start
response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 99, in password_reset
form.save(**opts)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/forms.py", line 125, in save
t = loader.get_template(email_template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_email.html
======================================================================
ERROR: test_confirm_invalid (django.contrib.auth.tests.views.PasswordResetTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 85, in test_confirm_invalid
url, path = self._test_confirm_start()
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 67, in _test_confirm_start
response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 99, in password_reset
form.save(**opts)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/forms.py", line 125, in save
t = loader.get_template(email_template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_email.html
======================================================================
ERROR: test_confirm_invalid_post (django.contrib.auth.tests.views.PasswordResetTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 97, in test_confirm_invalid_post
url, path = self._test_confirm_start()
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 67, in _test_confirm_start
response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 99, in password_reset
form.save(**opts)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/forms.py", line 125, in save
t = loader.get_template(email_template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_email.html
======================================================================
ERROR: test_confirm_valid (django.contrib.auth.tests.views.PasswordResetTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 78, in test_confirm_valid
url, path = self._test_confirm_start()
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 67, in _test_confirm_start
response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 99, in password_reset
form.save(**opts)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/forms.py", line 125, in save
t = loader.get_template(email_template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_email.html
======================================================================
ERROR: Email is sent if a valid email address is provided for password reset
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 60, in test_email_found
response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 313, in post
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 99, in password_reset
form.save(**opts)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/forms.py", line 125, in save
t = loader.get_template(email_template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_email.html
======================================================================
ERROR: Error is raised if the provided email address isn't currently registered
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.5/django/contrib/auth/tests/views.py", line 52, in test_email_not_found
response = self.client.get('/password_reset/')
File "/usr/lib/pymodules/python2.5/django/test/client.py", line 281, in get
response = self.request(**r)
File "/usr/lib/pymodules/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/pymodules/python2.5/django/contrib/auth/views.py", line 105, in password_reset
}, context_instance=RequestContext(request))
File "/usr/lib/pymodules/python2.5/django/shortcuts/__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 103, in render_to_string
t = get_template(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 81, in get_template
source, origin = find_template_source(template_name)
File "/usr/lib/pymodules/python2.5/django/template/loader.py", line 74, in find_template_source
raise TemplateDoesNotExist, name
TemplateDoesNotExist: registration/password_reset_form.html
----------------------------------------------------------------------
Ran 33 tests in 3.696s
FAILED (errors=10)
Destroying test database...
$
我到底发生了什么?我甚至没有做错任何事情,我已经失败了:)。
答案 0 :(得分:3)
“manage.py test”的默认操作是对INSTALLED_APPS
中settings.py
中列出的应用程序运行所有测试。在这种情况下,您最终会运行django的auth应用程序的测试。据推测,他们需要一些数据/装置,以便测试顺利运行。你想要做的只是为你的应用程序运行测试:“manage.py test MY_APP”。有关详细信息,请参阅Running Tests。
更新:除非您为django提供补丁,否则我不确定每次运行自己的测试都需要运行这些测试。但是......如果您想运行django测试,无论出于何种原因,最简单的方法是以下(我将使用您的“垃圾”项目作为空白模板)。
输入:
python runtests.py --settings = junk.settings auth
在3.538s中进行48次测试
确定
答案 1 :(得分:1)
您是否设置了自己的网站并将设置中的SITE_ID
设置为1
?我记得如果SITE_ID
未设置为1
,则Django的测试套件无法正常工作。
答案 2 :(得分:1)
您必须在TEMPLATE_DIRS中指定至少一个路径,然后才能正常工作。我不知道它的原因,也许是一个bug。我没详细说明......
答案 3 :(得分:0)
确保在运行PYTHONPATH
之前设置了DJANGO_SETTINGS_MODULE
和manage.py
。我喜欢在我的项目目录中创建一个脚本,当我想运行时,我可以提供该脚本。即。
# cat ./localenv
PYTHONPATH=...
DJANGO_SETTINGS_MODULE=...
# . ./localenv
# python ./manage.py ...
答案 4 :(得分:0)
所以我得到同样的东西,当我把django admin放在INSTALLED_APPS中时,它不再失败,因为管理模块带有测试所抱怨的缺少的模板和处理程序。
所以我想我的建议是将django admin留在INSTALLED_APPS中,但不要在urlconf中打开它。