如果Django';我们自己的单元测试失败了吗?

如果Django';我们自己的单元测试失败了吗?,django,Django,我使用Django主干,注意到主干中Django模块的单元测试总是失败。Django主干应该通过它自己的所有单元测试吗 以下是一些示例错误: ====================================================================== ERROR: test_password_change_fails_with_invalid_old_password (django.contrib.auth.tests.views.ChangePasswordT

我使用Django主干,注意到主干中Django模块的单元测试总是失败。Django主干应该通过它自己的所有单元测试吗

以下是一些示例错误:

====================================================================== ERROR: test_password_change_fails_with_invalid_old_password (django.contrib.auth.tests.views.ChangePasswordTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/michael/django/trunk/django/contrib/auth/tests/views.py", line 156, in test_password_change_fails_with_invalid_old_password 'new_password2': 'password1', File "/Users/michael/django/trunk/django/test/client.py", line 318, in post response = self.request(**r) File "/Users/michael/django/trunk/django/core/handlers/base.py", line 87, in get_response response = middleware_method(request, callback, callback_args, callback_kwargs) File "/Users/michael/Documents/workspace/drchrono/drchrono_middleware/drchrono.py", line 31, in process_view setattr(request, 'currentDoctor', request.user.get_profile().doctor) #Default is to have currentDoctor be default for logged in user. File "/Users/michael/django/trunk/django/contrib/auth/models.py", line 285, in get_profile self._profile_cache = model._default_manager.get(user__id__exact=self.id) File "/Users/michael/django/trunk/django/db/models/manager.py", line 119, in get return self.get_query_set().get(*args, **kwargs) File "/Users/michael/django/trunk/django/db/models/query.py", line 298, in get % self.model._meta.object_name) DoesNotExist: UserProfile matching query does not exist. ====================================================================== 错误:测试密码更改失败,密码无效(django.contrib.auth.tests.views.ChangePasswordTest) ---------------------------------------------------------------------- 回溯(最近一次呼叫最后一次): 文件“/Users/michael/django/trunk/django/contrib/auth/tests/views.py”,第156行,测试密码更改失败,密码无效 “新密码2”:“密码1”, 文件“/Users/michael/django/trunk/django/test/client.py”,第318行,在post中 响应=自我请求(**r) 文件“/Users/michael/django/trunk/django/core/handlers/base.py”,第87行,在get_响应中 响应=中间件方法(请求、回调、回调参数、回调参数) 文件“/Users/michael/Documents/workspace/drchrono/drchrono\u middleware/drchrono.py”,第31行,进程视图中 setattr(request'currentDoctor',request.user.get_profile().doctor)#默认值是将currentDoctor作为登录用户的默认值。 文件“/Users/michael/django/trunk/django/contrib/auth/models.py”,第285行,在get_配置文件中 self.\u profile\u cache=model.\u default\u manager.get(user\u id\u exact=self.id) get中第119行的文件“/Users/michael/django/trunk/django/db/models/manager.py” 返回self.get\u query\u set().get(*args,**kwargs) get中的文件“/Users/michael/django/trunk/django/db/models/query.py”,第298行 %self.model.\u meta.object\u name) DoesNotExist:用户配置文件匹配查询不存在。
我刚刚意识到,很多错误都提到缺少UserProfile,并且我有一个自定义UserProfile对象,我在通过Web注册过程创建新用户时创建了该对象(但在admin中实例化新用户对象时不会创建该对象,或者我将通过代码进行假设)因此,这可能是我的应用程序的错误,因为它没有为不是通过GUI创建的用户创建用户配置文件。如何为创建的每个用户对象创建UserProfile?您是否对用户类的new()方法进行monkeypatch操作?

主干应该通过所有测试。如果你有持续的失败,也许你的环境在某种程度上是不寻常的。如果不同的测试在不同的时间失败,您可能只是在观察典型的主干混乱


这家公司对这类事情反应相当积极。如果你专业地问(例如,不是“伙计们,你的代码sux!它甚至没有通过自己的测试!!”),他们会帮助你找出问题所在。

几周前,开发者列表中提到(请参阅)开箱即用的Django没有通过所有测试。然而,这是因为缺少特定的模板,而不是数据库表。有什么值得注意的吗?

我使用的是django 1.2.3(一个稳定的版本,而不是主干)。当我创建一个空的应用程序并运行
/manage.py test
时,有三个测试失败,其中一个就是上面提到的测试。但是,在我的例子中,错误与缺少的模板有关:
TemplateDoesNotExist:registration/password\u change\u form.html
。这就是为什么我认为(像Daniel一样)缺少模板确实是个问题。

我认为这可能是由于我的开发设置。我使用的是OSX和MySQL,大多数故障似乎与重命名表之类的数据库相关。OSX和MySQL都得到了完全支持,因此仍然值得一问。我相信Django小组更希望您能够自信地运行测试。这不是在现成的应用程序上,而是在工作的应用程序上。我在这里找到了解释