2013-08-20 93 views
1

django-webtest,每個測試TestCase子類自帶self.app,這是webtest.TestApp的一個實例,然後我可以使它作爲用戶A登錄self.app.get('/ 」,用戶= 'A')。django-webtest與多個測試客戶端

但是,如果我想測試用戶A和用戶B在測試中的行爲,我該如何做?

似乎self.app只是傳入了extra_environ的DjangoTestApp()。是否適合只創建它的另一個實例?

回答

0

我還沒有嘗試按照您的建議設置DjangoTestApp的另一個實例,但是我已經編寫了複雜的測試,其中在用戶AI發出請求後,然後切換到用戶B發出請求,沒有問題,每種情況都會通過在提出請求時用戶或用戶名,例如就像你已經寫過的那樣。

唯一未按預期工作的部分是在進行未經身份驗證的請求時(例如, self.app.get('/', user=None)。這沒有像預期的那樣工作,而是繼續在請求之前立即使用請求中的用戶。

要重置應用程序狀態(應允許您以順序方式模擬多個用戶的大多數工作流程),您可以運行self.renew_app()這將刷新您的應用程序狀態,從而有效記錄當前用戶。

要測試多個用戶同時訪問(您的問題沒有明確指出您想要測試的內容),那麼設置另一個DjangoTestApp實例似乎值得探索。