セロリ ワーカーやセロリ ビートを実行する必要はありません。これは、単体テストとしてはあまり適していません。タスクをテストしようとしているので、タスクを分離してテストする必要があります。CELERY_ALWAYS_EAGER モードでテストを実行するか、非同期モードを使用せずにテスト内からタスクを実行する必要があります。
非同期の使用を避けるには、次のようにタスクを呼び出すだけです。
@celery.task
def task_to_test():
print('stuff')
def test:
task_to_test()
それができない場合。常に熱心に使用するように設定をオーバーライドします。
from tasks import task_to_test
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,
CELERY_ALWAYS_EAGER=True,
BROKER_MEMORY='memory',
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',}})
class MyTests(TestCase):
def test():
task_to_test.delay()