2012-04-28 34 views
6

Çalıştığım birkaç projede birim testinin django 1.4 ürününün tanıtımıyla çalışıyorum.Selenyum testleri ve birim testleri düzenlemek için en iyi yöntem

Birim testlerimi çalıştırmanın standart yolu ./manage.py test yapmaktır ve test edilmek istemediğim özel django uygulamalarını (gerekirse) hariç tutmak için django-ignoretests kullanıyorum.

Ancak, ben istediğim zaman sadece selenyum testler karar ve ./manage.py test ise yalnızca video standart birim testleri böylece projemi yapılandırmak için bir yolu yoktur.

Selenyum testlerini ve standart ünite testlerini ayırmak ve düzenlemek için bazı en iyi uygulamalar nelerdir?

cevap

5

Hep grubu (örneğin burada https://stackoverflow.com/a/5160779/1138710 açıklandığı gibi) ve daha sonra altında testlerin kalanını manage.py test myapp.selenium_tests çalıştırın ve grubunun tek bir paket myapp/selenium_tests/ altında tüm selenyum testleri myapp/other_tests söyleyebiliriz. Aksi

, sana (docs bkz: https://docs.djangoproject.com/en/dev/topics/testing/#defining-a-test-runner) o LiveServerTestCase türediği konusunda her test sınıfı için denetler bir test koşucu yazabilirim herhalde söz konusu deney sınıfları için

+0

Selenyum testleri işlevsel olma eğilimindeyken, bunları ayrı bir pakette saklayarak, onları atlatma seçeneği ile birlikte yapmaya çalışıyorum (http://stackoverflow.com/a/10743466/4281). Test koşucusu fikrini beğendim, ancak bazı durumlarda testler LiveServerTestCase'in bir soyundan gelmeyebilir (başka bir konu). –

5

, şu dekoratör ekledi:

Sonra
from django.conf import settings 
@unittest.skipIf(getattr(settings,'SKIP_SELENIUM_TESTS', False), "Skipping Selenium tests") 

bu testler ayarları dosyasına eklemek atlamak: LiveServerTestCase alt sınıfının veya basit bir dekoratör içine SKIP_SELENIUM_TESTS = True

Bu kolayca sarılmış olabilir . Eğer birden fazla yerde olsaydım, zaten olurdu.

İlgili konular