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

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006
  • Tomas N

    Tomas N

    14 Kasım 2010