2013-03-23 14 views
8

django-nose kullanılan bir django projem var. Projeye django-celery eklemek istiyorum. Birim testleri kullanıyorum. Hem django hem de django-kereviz, settings.py dosyasında bir TEST_RUNNER ayarına ihtiyaç duyar. Özellikle:Django-burnu ve django-kerevizi birlikte kullanma - birim testi

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' 
django-burun için

ve:

django-kereviz için
TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner' 

.

Her iki paketi de kullanabilmem için nasıl kullanmalıyım?

+0

+1 idk, belki bir alt sınıfı ve diğerinin işlevselliğini kendi sınıfınıza eklemelisiniz. –

cevap

6

Bunu işlemenin en iyi yolunun Kereviz testi yolcusunu atlamak olduğunu gördüm. Sadece keresteli test testlerini @override_settings(CELERY_ALWAYS_EAGER=True) ile kullanıyorum ve her şey güzelce test ediliyor.

4

Eğer kereviz ve non-kereviz bağımlı işlevsellik içine testleri izole etmek mümkün iseniz, kereviz görevleri çağırmak Test sınıfları üzerinde overriding settings deneyebilirsiniz: NoseTestRunner olarak ayarlanmış olacağını ise

from django.test.utils import override_settings 

@override_settings(TEST_RUNNER='djcelery.contrib.test_runner.CeleryTestSuiteRunner') 
class AsyncTestCase(TestCase): 
    def test_async(self): 
     self.assertEquals(add.delay(4,4), 8) 

default.py

+0

Teşekkürler - Bu yaklaşıma bakacağım. – Erik

1

Kereviz koşucusu ve Burun koşucu alt sınıfı yapabilirsiniz, daha sonra bunların hepsi için iyi taraflar olsun. Ayarlarınızdaki Sonra

from django_nose import NoseTestSuiteRunner 
from djcelery.contrib.test_runner import CeleryTestSuiteRunner 

class TestRunner(CeleryTestSuiteRunner, NoseTestSuiteRunner): 
    pass 

:

TEST_RUNNER = '<package to>.TestRunner' 

çalışır Neden:

help(TestRunner) 

Alacağınız:

| Method resolution order: 
|  TestRunner 
|  djcelery.contrib.test_runner.CeleryTestSuiteRunner 
|  django_nose.runner.NoseTestSuiteRunner 
|  django_nose.runner.BasicNoseRunner 
|  django_nose.runner.BaseRunner 
|  django.test.runner.DiscoverRunner 
|  builtins.object 

testi CeleryTestRunner hiçbir şey yapmadı sadece bazı yapılandırma ayarı ve sonra'i arayın. Ardından süper bu zincirde setup_test_environment() öğesini arayacaktır.

Raymond Hettinger'ın videosunu izleyin: super added super (here).