Javascript-Test im Django-Projekt mit CI und Coverage

8

Ich arbeite an einem Django-Projekt, das im Design ziemlich javascript-lastig ist. Für den serverseitigen Code versuchen wir, mit Unittests eine anständige Testabdeckung zu erreichen, und auf einer etwas höheren Ebene haben Tests mit dem Django Testclient. Wir haben einen Hudson / Jenkins-Server, der für CI läuft, mit Dingen, die mehr oder weniger in der Art von Dieser Artikel gibt uns Test-Pass- und Coverage-Statistiken.

Ich möchte auch etwas Ähnliches für unser Javascript haben. Ich möchte gerne auf Unit-Test-Ebene, aber auch auf Integrations- / Abnahmetest-Ebene testen können. Letzteres würde eine vollständige DOM JS-Umgebung und einen laufenden Django-Server erfordern. Idealerweise würde ich den Django-Testclient irgendwie verwenden wollen, damit ich den Server-Zustand so einrichten kann, wie ich es für Django-Tests gewohnt bin. Ich möchte auch alle Tests vom CI-Server ausführen, die eine Art Headless-Browser-Umgebung erfordern (Server ist Ubuntu ohne Desktop-Umgebung).

Ich habe eine Menge Zeug gefunden, aber es fühlt sich so an, als könnte es nicht auf dem CI-Server laufen. Auch die Integration mit Django ist oft nicht gut und macht keine gute Test-Isolation für die Serverumgebung. Schließlich möchte ich im Idealfall etwas, das in einem ziemlich guten Tempo funktioniert, um meinen Test / Code-Zyklus so schnell wie möglich zu halten.

Gibt es Frameworks, die tun, was ich will, oder hat es jemand geschafft, eine naheliegende Lösung zusammen zu bringen? Und gibt es bewährte Best Practices für gute JavaScript-Tests in Kombination mit Django (d. H. Gibt es irgendwelche empfohlenen Ansätze von den Django-Leuten, die mir fehlen)?

    
Shabaz 14.06.2011, 11:49
quelle

2 Antworten

1

HtmlUNIT sieht so aus, als könnte es etwas von dem machen, was Sie brauchen (zB ein kopfloser Browser, der JavaScript unterstützt). Es sollte nicht too sein, dies gegen einen 'runserver'-Stil-Management-Befehl zu staffeln, der auch die Abdeckung beim Beenden ausgibt.

Ссылка

    
Tom Christie 14.06.2011 14:26
quelle
0

Vielleicht möchten Sie Ghost.py eine Python-Implementierung von Phantom.JS . Ich biete eine Erweiterung für den Django, der auf dem kommenden LiveServerTestCase aufbaut.

Es basiert auf PyQt4, also müssen Sie es in das virtualenv Ihres Projekts kopieren.

    
D3f0 07.01.2013 18:26
quelle