【问题标题】:What to do if Django's trunks own unit tests fail?如果 Django 的trunks 自己的单元测试失败了怎么办?
【发布时间】:2009-10-28 14:22:16
【问题描述】:

我在 Django 主干上工作,并注意到主干中 Django 模块的单元测试总是失败。 Django 主干是否应该通过它自己的所有单元测试?

以下是一些示例错误:

==================================================== ===================== 错误:test_password_change_fails_with_invalid_old_password (django.contrib.auth.tests.views.ChangePasswordTest) -------------------------------------------------- -------------------- 回溯(最近一次通话最后): 文件“/Users/michael/django/trunk/django/contrib/auth/tests/views.py”,第 156 行,在 test_password_change_fails_with_invalid_old_password 'new_password2': 'password1', 文件“/Users/michael/django/trunk/django/test/client.py”,第 318 行,在帖子中 响应 = self.request(**r) 文件“/Users/michael/django/trunk/django/core/handlers/base.py”,第 87 行,在 get_response response = middleware_method(request, callback, callback_args, callback_kwargs) 文件“/Users/michael/Documents/workspace/drchrono/drchrono_middleware/drchrono.py”,第 31 行,在 process_view setattr(request, 'currentDoctor', request.user.get_profile().doctor) #默认是让 currentDoctor 成为登录用户的默认值。 文件“/Users/michael/django/trunk/django/contrib/auth/models.py”,第 285 行,在 get_profile self._profile_cache = model._default_manager.get(user__id__exact=self.id) 文件“/Users/michael/django/trunk/django/db/models/manager.py”,第 119 行,在 get 返回 self.get_query_set().get(*args, **kwargs) 文件“/Users/michael/django/trunk/django/db/models/query.py”,第 298 行,在 get % self.model._meta.object_name) DoesNotExist:UserProfile 匹配查询不存在。

我刚刚意识到很多错误都提到了缺少的 UserProfile 并且我有一个自定义 UserProfile 对象,我在通过 Web 注册过程创建新用户时创建了该对象(但在实例化新用户对象时不会创建该对象在管理员中,否则我将通过代码进行假设。)所以也许这是我的应用程序的错误,因为没有为不是通过 GUI 创建的用户创建用户配置文件。如何为创建的每个用户对象创建一个用户配置文件?你会猴子补丁 User 类的 new() 方法吗?

【问题讨论】:

    标签: django


    【解决方案1】:

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

    django-developers list 对此类事情非常敏感。如果您以专业的方式提问(例如,不是“伙计们,您的代码 sux!它甚至没有通过自己的测试!!”),他们会帮助您找出问题所在。

    【讨论】:

    • 我认为这可能是由于我的开发设置。我正在使用 OSX 和 MySQL,大多数故障似乎与重命名表等数据库相关。
    • 完全支持 OSX 和 MySQL,所以仍然值得一问。我相信 Django 小组希望您可以自信地运行测试。
    【解决方案2】:

    几周前在开发人员列表中指出(参见this thread),开箱即用的 Django 并未通过所有测试。然而,这与缺乏特定模板有关,而不是与数据库表有关。有什么东西会响吗?

    【讨论】:

    • 这不是开箱即用的应用程序,而是一个工作应用程序。
    【解决方案3】:

    我正在使用 django 1.2.3(稳定版本,而不是主干)。当我创建一个空应用程序并运行./manage.py test 时,我得到三个测试失败,其中之一就是上面指出的那个。然而,就我而言,该错误与缺少模板有关:TemplateDoesNotExist: registration/password_change_form.html。这就是为什么我认为(像丹尼尔一样)缺少模板确实是一个问题。

    【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2012-08-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2018-10-21
    • 2019-02-10
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多