2012-12-08 46 views
5

我有一個項目,其中一些更改可能導致某些視圖中的500狀態。Django - 測試500頁狀態頁面

什麼是最優雅的方式進行單元測試,將檢查所有視圖/頁面(有靜態路由,當然沒有變量)不返回500狀態?

回答

2

單元測試,你可以使用類似(感謝@Hedde提醒我的名字。):

from django import test 
from django.core.urlresolvers import reverse 
from page.urls import urlpatterns 

class PageTest(test.TestCase): 

    def test_responses(self): 
     for url in urlpatterns: 
      response = self.client.get(reverse(url.name)) 
      self.assertEqual(response.status_code, 200) 
+0

對於帶參數的頁面我不相信。但要忽略它們,我可以檢查NoReverseMatch異常。 – DataGreed

0

首先,500個錯誤是不可接受的,像New Relic這樣的集中式日誌解決方案會爲您提供異常的詳細回溯(通常是500錯誤的原因)。或者你可以做一個古老而便宜的解決方案:每次發生500次郵件時發送一封電子郵件。還有其他集中式日誌解決方案,也用Python編寫,但不幸的是我不記得他們的名字。

如果你還希望測試頁不返回500,有很多可能的方式:

  1. 硒/ webdriver的或等效的功能測試。強勁,但需要顯著努力
  2. 定義腳本來解決有關間歇500錯誤,你應該運行的網頁

HTTP狀態運行計劃的檢查測試幾次連續。

更新:對於跟蹤誤差,最好使用像https://github.com/getsentry/sentry/和解決這些問題的時候了

+1

我推薦哨兵這是一個很棒的記錄器 –

+0

是的,就是這樣。 –

+0

那麼,這與我的問題根本沒有關係,除了硒的部分,但它也沒有回答我直截了當的問題。 – DataGreed