2013-10-27 53 views
1

在閱讀文檔我來跨越兩個相矛盾paragraphes,我無法真正理解測試Django應用程序的cookie,會話和狀態

第一個說:

測試客戶端是有狀態的。如果響應返回一個cookie,那麼該cookie將被存儲在測試客戶端中,並隨後發送所有get()和post()請求。

沒有遵循這些cookie的到期政策。如果您希望Cookie過期,請>手動刪除它或創建一個新的客戶端實例(這將實際刪除所有Cookie)。

而其他:

每個測試用例在django.test.TestCase實例有權訪問一個Django>測試客戶機的一個實例。該客戶端可以作爲self.client訪問。這個客戶端是爲每個測試重新創建的,因此您不必擔心狀態(如cookie)從一個測試轉移到另一個測試。

簡單地說,如果我是測試者登陸,我必須使用django.contrib.auth.logout() 每個login()後|| post('/login/',data)

還是每個測試用例登錄| post | get都有自己的狀態/ cookies/session數據?

這對我有點困惑。

+0

找到另一種方式,在客戶端內() Client.logout() – AmOs

回答

2

兩條語句做不是相互矛盾。

在一次測試中,您可以多次使用self.client。您可以登錄,並且測試客戶端中的cookie處理將「記住」您的會話,以供後續請求使用。

只有當測試完成後,該狀態是否被清除。

你不需要註銷,因爲這是一個客戶端狀態存儲在cookie中,並且當測試完成時該狀態被清除。如果您想測試用戶登錄但會話已過期或類似情況後會發生什麼,請僅使用.logout()

+0

如果我想在同一個測試函數中測試另一個用戶,該怎麼辦? > a = c.login(user1,password) – AmOs

+0

然後,您將註銷並使用相同的客戶端對象重新登錄。 * *客戶端*訪問註銷鏈接。 –

+0

我將如何使用相同的客戶端對象註銷?通過清除客戶端的cookies和會話屬性? – AmOs

相關問題