2012-11-23 9 views
6

Ich habe einige Casperjs-Tests geschrieben, um meine Django-Anwendung zu testen. Wenn die Django-Anwendung gestartet wird (zum Beispiel auf Port 8000), können casperjs als separater Prozess ausgeführt werden und auf meine laufende Django-App zugreifen.Wie kann ich Casperjs Javascript-Tests von Jenkins ausführen?

Meine anderen Tests wurden mit Djangos (Web-) Testframework geschrieben, das die Testdatenbank mit Fixtures einrichtet und mit ./manage.py test ausgeführt wird. Mit Django webtest müssen Sie keinen separaten Django-Webserver starten (Anfragen und URL-Routing wird proxied/simuliert).

Gibt es eine Möglichkeit, casperjs Tests aus Django Webtest zu starten? Ohne einen anderen Webserver zu starten und noch eine Testdatenbank zu haben?

Ich habe gesehen Ghost.py existiert, aber habe es noch nicht ausprobiert.

Antwort

3

Ich habe es geschafft, eine Lösung zu finden. Nach dem Upgrade auf Django 1.4 kann ich LiveServerTestCase und Gabel casperjs in einem Teilprozess verwenden:

from django.test.testcases import LiveServerTestCase 
import os, subprocess 
from subprocess import Popen, PIPE, STDOUT 

class CasperTest(LiveServerTestCase): 
    fixtures = ['test_initial_data', ] 

    def test_my_testcase(self): 
     p = Popen(['casperjs %s/caspertest.js' % os.path.dirname(__file__)], shell=True, stdout=PIPE, stderr=STDOUT, close_fds=True) 
     output = p.stdout.read() 
     print output 
1

Sie einen Blick auf django-casper nehmen sollte. Ich habe es vor ein paar Tagen benutzt und es ist einfach großartig!