2011-10-30 17 views
0

我想在Django配置文件應用程序中爲視圖編寫一些測試。在Django個人檔案應用中測試視圖的最佳做法?

視圖有一些聰明的錯誤處理邏輯。例如如果我們嘗試創建一個配置文件,但配置文件已經存在,那麼只需重定向到現有的配置文件頁面(或者可能到編輯配置文件頁面)。

我該如何測試這種錯誤處理是否符合要求? 什麼是最佳做法?

一個想法是使用Zombie.js做BDD,並測試我看到的標題不是「創建配置文件」(或者檢查我看到的標題是「編輯配置文件」的頁面)的頁面。但是Django的測試文檔說:

  • 使用Django的測試客戶端來建立正確的觀點正在被 調用,該視圖正在收集正確的上下文數據。
  • 使用瀏覽器內框架(如Twill和Selenium)來測試HTML和HTML頁面的行爲,即JavaScript功能。

但是,如果我想使用Django的測試客戶端,它可以做到以下幾點:

  • 模擬GET和一個URL POST請求並觀察響應 - 從低層次的HTTP (結果標題和狀態代碼)到頁面內容。
  • 測試是否爲給定的URL執行了正確的視圖。
  • 測試給定的請求是由給定的Django模板呈現的,其中包含特定值的模板上下文。

我應該使用測試客戶端,然後看看頁面內容嗎?我應該看看模板被渲染了嗎?測試此視圖的適當方法是什麼?

回答

1

重定向和配置文件創建非常Django,所以雖然你可能使用其他框架來測試JS功能,我會使用django測試客戶端爲這個實例。

您必須根據具體情況決定與您的測試走多遠。時間有限,有些方面比其他方面更容易破損。例如,我不會擔心模板解析 - 一個200狀態碼和一個快速檢查內容是很多。

安美居,我會通過識別不同的狀態視圖有啓動(我猜這裏):

  • 渲染本身(檢查內容,模板,狀態代碼等)
  • 簡介表單驗證錯誤
  • 配置文件表單成功:配置文件創建:成功重定向
  • 智能錯誤處理/重定向。

如何測試此錯誤處理是否按照所需的方式工作?

# create object with specific ID. 
# post form data that should trigger your special redirect. 
# ensure the redirect takes you to the model you just created via reverse 
response = client.post(reverse('form_url'), {'valid_form_data': ''}, follow=True) 
assertRedirects(response, reverse('view_url', args=[id]), target_status_code=200) 

這將確認正確的配置文件被重定向到給定的任何數據,你已經決定要觸發這個動作。

+0

我可以在Django測試代碼之外使用assertRedirects嗎?我正在編寫使用生菜(http://lettuce.it)的測試用例,因爲它可以更容易地指定許多測試,但我認爲我不在Django TestCase對象內。 –