2012-11-23 12 views
6

Django uygulamamı test etmek için bazı casperjs testleri yazdım. Django uygulaması başlatılmışsa (örneğin 8000 portunda), casperjs ayrı bir işlem olarak çalıştırılabilir ve çalışan Django uygulamasına erişebilir.Jenkins'den casperjs javascript testlerini nasıl çalıştırırım?

Diğer testler, test veritabanını fikstürle ayarlayan Django'nun (web) test çerçevesiyle yazılmıştır ve ./manage.py test ile çalıştırılmaktadır. Django web testi ile ayrı bir Django web sunucusu başlatmanız gerekmez (istekte bulunur ve URL yönlendirmesi proxy/simüle edilir).

Casperjs testlerini Django web testinden çıkarmak için bir yol var mı? Başka bir web sunucusu kurmadan ve başka bir test veritabanına sahip olmadan?

ghost.py'nin varlığını gördüm, ancak henüz denemedim.

cevap

3

Bir çözüm bulmayı başardım. Django 1.4 yükselttikten sonra bir alt süreç olarak LiveServerTestCase ve çatal casperjs kullanabilirsiniz:

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