我正在爲使用django-nose的芹菜任務編寫單元測試。這是相當典型的;一個空白測試數據庫(REUSE_DB = 0),它在測試時間通過夾具進行預填充。django-nose單元測試芹菜任務...缺少數據庫數據
我遇到的問題是,即使TestCase加載夾具,我可以從測試方法中訪問對象,但在異步芹菜任務中執行同樣的查詢失敗。
我已經檢查了settings.DATABASES [「default」] [「name」]在測試方法和被測試任務中都是一樣的。我還驗證了,在作爲常規方法調用調用時,正在測試的任務的行爲正確。
而這就是我不在哪裏的想法。
這裏有一個例子:
class MyTest(TestCase):
fixtures = ['test_data.json']
def setUp(self):
settings.CELERY_ALWAYS_EAGER = True # seems to be required; if not I get socket errors for Rabbit
settings.CELERY_EAGER_PROPAGATES_EXCEPTIONS = True # exposes errors in the code under test.
def test_city(self):
self.assertIsNotNone(City.objects.get(name='brisbane'))
myTask.delay(city_name='brisbane').get()
# The following works fine: myTask('brisbane')
from celery.task import task
@task()
def myTask(city_name):
c = City.objects.count() # gives 0
my_city = City.objects.get(name=city_name) # raises DoesNotExist exception
return
你使用什麼數據庫和芹菜/ django芹菜什麼版本? –