我在 Django 主干上工作,注意到主干中 Django 模块的单元测试总是失败。 Django trunk 应该通过它自己的所有单元测试吗?
以下是一些错误示例:
====================================================================== 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.
我刚刚意识到很多错误都提到缺少 UserProfile,并且我有一个自定义 UserProfile 对象,是在通过 Web 注册过程创建新用户时创建的(但在实例化新 User 对象时不会创建该对象)在管理员中,或者我将通过代码进行假设。)所以这可能是我的应用程序的错误,因为没有为不是通过 GUI 创建的用户创建用户配置文件。如何为创建的每个用户对象创建一个用户配置文件?您是否对 User 类的 new() 方法进行了猴子补丁?
最佳答案
主干应该通过所有测试。如果您持续出现故障,则可能您的环境在某些方面不寻常。如果不同的测试在不同的时间失败,您可能只是观察到典型的主干困惑。
django-developers list对此类事情 react 非常灵敏。如果您专业地询问(例如,不是“伙计们,您的代码很糟糕!它甚至没有通过自己的测试!”),他们会帮助您找出问题所在。
关于django - 如果Django的trunk自带的单元测试失败怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637561/