SORU
29 EKİM 2010, Cuma


Django-kereviz ile birim test?

django-celery projemiz için bir test yöntemi ile gelip çalışıyorum. documentation notları okudum ama bana aslında ne iyi bir fikir vermedi. Gerçek araçları, işlevleri, görevleri test hakkında endişeli değilimbenimkod. Özellikle merak ettiğim bir şey var:

  1. Nasıl test sırasında task.delay() (fark etmezdi ama CELERY_ALWAYS_EAGER = True ayarı denedim) atlayabilir miyiz?
  2. Nasıl tavsiye Eğer en iyi yolu ise () aslında bizim settings.py değiştirmeden test ayarları kullanıyoruz?
  3. Hala manage.py test kullanabilir miyiz ya da özel bir koşucu kullanmak zorunda mıyız?

Kereviz ile test için genel olarak herhangi bir ipucu ya da ipuçları çok yararlı olacaktır.

CEVAP
19 Aralık 2012, ÇARŞAMBA


Kereviz sonuçları gereken testleri override_settings dekoratör kullanmak için tam severim.

from django.test import TestCase
from django.test.utils import override_settings
from myapp.tasks import mytask

class AddTestCase(TestCase):

    @override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,
                       CELERY_ALWAYS_EAGER=True,
                       BROKER_BACKEND='memory')
    def test_mytask(self):
        result = mytask.delay()
        self.assertTrue(result.successful()

Eğer tüm testler için bu uygulamak istiyorsanız temelde dışında bu aynı ayarlar (BROKER_BACKEND = 'memory') ayarlar http://docs.celeryproject.org/en/2.5/django/unit-testing.html belirtildiği gibi kereviz test runner kullanabilirsiniz.

Ayarları:

TEST_RUNNER = 'djcelery.contrib.test_runner.CeleryTestSuiteRunner'

CeleryTestSuiteRunner için kaynak bakın ve neler olduğu çok açık.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 趣味そうこ♪

    趣味そう

    3 Mart 2010
  • Mega64

    Mega64

    24 ŞUBAT 2006
  • ThePointblank

    ThePointblan

    18 Aralık 2006