2009-10-28 47 views
2

我關閉了Django主幹,注意到主幹中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. 

我才意識到,很多錯誤的提缺少用戶配置,並且我有我創建通過新用戶時創建一個自定義用戶配置對象Web註冊過程(但是在管理員中實例化一個新的User對象時並未創建,或者我將通過代碼假設)。所以,也許這是我的應用程序的錯誤,因爲未爲通過GUI創建的用戶創建UserProfiles。我如何爲每個創建的用戶對象創建一個UserProfile?你是否用monkeypatch User類的new()方法?

回答

3

幹線應該通過所有的測試。如果你有一致的失敗,或許你的環境在某種程度上是不尋常的。如果不同的測試在不同的時間失敗,你可能只是在觀察典型的主幹擾動。

django-developers list對這樣的東西非常敏感。如果你專業地問(例如,不是「帥哥,你的代碼sux!它甚至不通過它自己的測試!!」),他們會幫助你找出問題所在。

+0

我認爲這可能是由於我的開發設置。我使用的是OSX和MySQL,大多數失敗似乎是重命名錶等數據庫相關的。 – MikeN 2009-10-28 15:47:46

+0

OSX和MySQL都完全支持,所以還是值得一問。我確信Django團隊會更喜歡你可以自信地運行測試。 – 2009-10-28 17:37:43

2

數星期前在開發人員名單中注意到(請參閱this thread),開箱即用的Django未通過其所有測試。然而,這是因爲缺乏特定的模板,而不是數據庫表。有沒有什麼鈴聲響起?

+0

這不是開箱即用的應用程序,而是一個正在運行的應用程序。 – MikeN 2009-10-29 00:22:56

0

我使用的是django 1.2.3(一個穩定版本,而不是主幹)。當我創建一個空應用程序並運行./manage.py test時,我得到三個測試失敗,其中之一是上面指出的一個。但在我的情況下,該錯誤與缺少的模板有關:TemplateDoesNotExist: registration/password_change_form.html。這就是爲什麼我認爲(像丹尼爾)這是缺少模板的問題。

+1

我在這裏找到了解釋http://www.mail-archive.com/[email protected]/msg78059.html – 2010-11-01 08:34:10