2016-07-26 86 views
0

我正在測試一個Django應用程序。當用戶登錄時,我將他重定向到圖形頁面。爲了測試,我寫Django重定向狀態代碼錯誤

response = TestCase.client.post('app/login', {credentials}, follow=True) 
TestCase.assertRedirects(response, 'app/graphs') 

返回

AssertionError: False is not true : 
Response didn't redirect as expected: Response code was 200 (expected 302). 

不夠合理。 The docs sayassertRedirects有一個status_code參數。然後調用

TestCase.assertRedirects(response, 'app/graphs', status_code=200) 

回報

AssertionError: False is not true : 
Response didn't redirect as expected: Response code was 200 (expected 200). 

這是怎麼回事?

回答

2

status_code參數是重定向響應的狀態。這應該通常是301(永久重定向)或302(臨時重定向)。

使用status_code=200沒有意義,因爲200不是重定向響應。

我同意響應代碼是200(預計200)。看起來有點混亂,但斷言錯誤的關鍵部分是響應沒有按預期重定向

由於斷言告訴你,你沒有被重定向,這表明你的帖子登錄不起作用。您可以嘗試檢查response.content以查看問題所在。請注意,您的網址應以斜槓開頭(即/app/login/app/graphs)。

+0

我在客戶端代碼中使用'window.location.href'來重定向,並希望確保我結束了正確的頁面。我怎麼能測試這個功能? –

+0

您可以使用Django測試客戶端來檢查'response.content'是否包含'window.location.href'的正確值。但是,如果你想測試瀏覽器行爲,你應該使用類似Selenium的東西。請參閱[文檔](https://docs.djangoproject.com/en/1.9/topics/testing/tools/#the-test-client)以獲取更多解釋。 – Alasdair