2011-06-14 8 views
8

Pracuję nad projektem Django, który z założenia jest dość ciężki javascript. Dla kodu servera staramy się mieć przyzwoite pokrycie testowe przy użyciu unittests, a na nieco wyższym poziomie testujemy za pomocą testclient Django. Mamy serwer Hudson/Jenkins działający dla CI, z ustawieniami mniej lub bardziej zgodnymi z this article, co daje nam przepustkę testową i statystyki zasięgu.Testowanie JavaScript w ramach projektu django, z CI i pokryciem

Chciałbym mieć coś podobnego również w naszym javascript. Chciałbym móc testować na poziomie testu jednostkowego, ale także na poziomie testu integracji/akceptacji. To drugie wymagałoby pełnego środowiska DOM JS i uruchomionego serwera django. Idealnie chciałbym w jakiś sposób użyć klienta testowego Django, aby skonfigurować serwer w taki sposób, w jaki jestem przyzwyczajony do testów Django. Chciałbym również uruchomić wszystkie testy z serwera CI, co wymagałoby pewnego rodzaju bezgłowego środowiska przeglądarki (serwer to Ubuntu bez środowiska graficznego).

Znalazłem sporo rzeczy, ale wydaje się, że nie można go uruchomić na serwerze CI. Również integracja z Django często nie jest świetna i nie zapewnia dobrej izolacji testowej dla środowiska serwera. W końcu chciałbym, aby coś podobnego działało w całkiem dobrym tempie, aby mój cykl test/kod był tak szybki, jak to tylko możliwe.

Czy istnieją frameworki, które robią to, co chcę, lub czy ktoś zdołał spleść razem rozwiązanie, które jest blisko? I czy istnieją ogólnie uznane dobre praktyki do robienia dobrych testów javascript w połączeniu z Django (np. Czy są jakieś zalecane podejścia od osób, których brakuje mi w Django)?

+0

"Cobble together" jest w sam raz dla mnie. Używałem celowania jruby i zombie.js, aby robić to, o co prosisz, ale nigdy nie znalazłeś rozwiązań bardzo satysfakcjonujących. Zawsze istniało coś specyficznego dla przeglądarki, które i tak musiało być testowane ręcznie. –

+0

to samo pytanie tutaj. Będę patrzył na rzeczy javascript w [django-jenkins] (https://github.com/kmmbvnr/django-jenkins), aby zobaczyć, czy to może zrobić część tego. – marc1s

Odpowiedz

1

Wygląda na to, że HtmlUNIT może spełnić pewne wymagania (np. Przeglądarka bez nagłówka obsługująca JavaScript). Nie powinno to być zbyt trudne w porównaniu z poleceniem zarządzania stylem "runserver", które również zrzuca obwieszczenie przy wyjściu.

http://htmlunit.sourceforge.net/

+0

+1 dla kierunku, ale ich zawartość jest trochę przerażająca: http://sourceforge.net/tracker/?group_id=47038&atid=448266 –

0

Możecie spróbować Ghost.py implementacji Pythona z Phantom.JS. Dostarczam rozszerzenie dla django na nadchodzące LiveServerTestCase.

Opiera się na PyQt4, więc będziesz musiał skopiować go do virtualenv twojego projektu.