2012-12-08 12 views
5

Mam projekt, w którym niektóre zmiany mogą doprowadzić do statusu 500 w niektórych widokach.Django - testowanie stron dla statusu 500

Jaki jest najbardziej elegancki sposób na wykonanie testów jednostkowych, które sprawdzą wszystkie widoki/strony (ze statycznymi trasami, oczywiście bez sparowanych) w przypadku braku zwrotu statusu 500?

Odpowiedz

2

Dla testów jednostkowych można użyć coś jak (dzięki @Hedde za przypomnienie mi tej nazwy.):

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

To nie będzie działać na stronach z parametrami, wierzę. Ale aby je zignorować, mogę sprawdzić wyjątek NoReverseMatch. – DataGreed

0

Po pierwsze, błędy 500 są niedopuszczalne, a niektóre scentralizowane rozwiązania w zakresie rejestrowania, takie jak New Relic, przedstawią szczegółowe śledzenie wyjątków (które zazwyczaj są przyczyną błędu 500). Lub możesz zrobić stare i tanie rozwiązanie: wyślij e-mail za każdym razem, gdy wydarzy się 500. Istnieją inne scentralizowane rozwiązania logujące, również napisane w Pythonie, ale niestety nie pamiętam ich nazw.

Jeśli nadal chcesz sprawdzić, czy strona nie zwracają 500, istnieje wiele możliwych sposobów:

  1. Testowanie funkcjonalne selenem/WebDriver lub równoważne. Mocna, ale wymaga znacznego wysiłku
  2. niestandardowy skrypt, aby uruchomić zaplanowane kontrole dla stanów HTTP stron

Dotyczących sporadyczne 500 błędy, należy uruchomić testy kilka razy z rzędu.

Aktualizacja: Do błędów śledzenia lepiej użyć coś jak https://github.com/getsentry/sentry/ i naprawić je od razu

+1

Polecam strażnikowi, że to świetny logger –

+0

tak, to było to. –

+0

Cóż, to nie ma nic wspólnego z moim pytaniem, z wyjątkiem części z selenem, ale także nie odpowiada na moje proste pytanie. – DataGreed

Powiązane problemy