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

  • Bobbylee Budde

    Bobbylee Bud

    13 ŞUBAT 2011
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012