代码之家  ›  专栏  ›  技术社区  ›  MikeN

如果Django的trunks自己的单元测试失败了怎么办?

  •  2
  • MikeN  · 技术社区  · 15 年前

    以下是一些错误示例:

    ======================================================================
    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.
    
    

    我刚刚意识到很多错误都提到了一个丢失的用户配置文件,并且我有一个自定义的用户配置文件对象,在通过Web注册过程创建一个新用户时创建(但在管理员中实例化一个新的用户对象时不会创建,或者我将通过代码进行假设)不是通过GUI创建的用户的用户配置文件。如何为创建的每个用户对象创建用户配置文件?您是否monkeypatch用户类的新()方法?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Ned Batchelder    15 年前

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

    这个 django-developers list 对这样的事情很敏感。如果你问专业(例如,不是“伙计,你的代码sux!它甚至连自己的测试都没有通过!!),他们会帮你找出问题所在。

        2
  •  2
  •   Daniel Roseman    15 年前

    这在几周前的开发者列表中被提到(见 this thread )现成的Django并没有通过所有的测试。但是,这是因为缺少特定的模板,而不是数据库表。有什么东西响了吗?

        3
  •  0
  •   Mohammed Safwat    14 年前

    我使用的是django 1.2.3(一个稳定的版本,而不是主干)。当我创建一个空应用程序并运行 ./manage.py test ,我得到三个测试失败,其中一个是上面指出的。但是,在我的情况下,错误与缺少的模板有关: TemplateDoesNotExist: registration/password_change_form.html