2014-09-01 37 views
0

我正在爲我的Django項目編寫一些測試,並且我正在嘗試測試登錄函數和將在「user_passes_test」裝飾器中的函數,在此特定測試中調用一個函數「is_teacher」。不幸的是,我不太清楚如何從響應中獲取用戶對象。我所嘗試的是以下內容,但我只會得到「'dict'對象沒有屬性'user'」的錯誤。使用Django測試與用戶對象有關的函數

user = User.objects.create_user(
    first_name='Elmar', 
    last_name='Fudd', 
    username='ef123', 
    email='[email protected]', 
    password='rabbitseason' 
) 
self.client.login(
    username='elmar', password='rabbitseason') 
response = self.client.get('/') 
request = response.request 
self.assertTrue(is_teacher(request.user)) 

如何從響應中獲取登錄用戶?

+0

你用什麼來創建你的用戶?你確定你的數據庫中有他的條目嗎?你有使用燈具嗎?或者是什麼? – Lara 2014-09-01 10:04:12

+0

已將我創建用戶的部分添加到上面的部分。感謝您的關注! – Tobi 2014-09-01 10:08:40

+0

假設您使用默認的Django用戶模型,您必須在創建用戶時設置密碼,因爲它是加密的。看看這個鏈接... https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.login – Lara 2014-09-01 10:11:19

回答

0

由於Django文檔中所述:中間件不支持

召回。您可以通過手動設置request.user來模擬登錄的 用戶。

所以基本上你必須用戶手動分配給請求:

request.user = user 

其中user是你手動創建用戶模型。

相關問題