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

  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • Tianna Sierra Dance

    Tianna Sierr

    16 EYLÜL 2013
  • Top10Series

    Top10Series

    26 Kasım 2008