myapp.tasks
içine tanımlanır ve böylece gibi benim models.py dosya üstündeki ithal edilmektedir:
from .tasks import mytask
... ve sonra kullanarak modelin iç save()
üzerinde çalışır mytask.delay(foo, bar)
. Şimdiye kadar çok iyi - aslında Celeryd vb. Çalıştırdığımda iyi çalışıyor.
Sadece doğru argümanlarla çağrıldığını kontrol etmek için görevi alay eden bir birim testi oluşturmak istiyorum. Şimdiye kadar Kereviz görevini çalıştırmaya çalış.
Yani deney dosyasında, bir standart TestCase bu içi gibi bir şey var:
from mock import patch # at the top of the file
# ...then later
def test_celery_task(self):
with patch('myapp.models.mytask.delay') as mock_task:
# ...create an instance of the model and save it etc
self.assertTrue(mock_task.called)
... ama çağrılan asla/zaman yanlıştır. Bunun yerine çeşitli enkarnasyonları denedim (myapp.models.mytask
yerine ve mock_task.delay
'un yerine çağrılıp çağrılmadığını kontrol ettim. Ben sahte yoldan aldığım sahte yollardan derledim, ve googling bana bunun içinde göründüğü gibi olması gerektiğini söylüyor. (Ben doğru anlamak eğer myapp.tasks.mytask.delay
yerine myapp.models.mytask.delay
olurdu) testlerinde altında modülü.
nerede yanlış burada gidiyorum? Kereviz görevleri yama içinde bazı özel zorluklar var mı? Ben olarak kullanıldığı (celery.task
yama Could dekoratör mytask
) yerine?
siz "= Gerçek CELERY_ALWAYS_EAGER" ayarı yerine onu alay denediniz mi? – clsung