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

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • TheDailyTechDose

    TheDailyTech

    15 EKİM 2012