Djangoのユニットテストフレームワークでいくつかのセロリ機能をテストしようとしていますが、AsyncResultをチェックしようとすると、ユニットのセロリーでのAsyncResultのテスト
私はこのコードがRabbitMQの実際の環境で動作することを知っていますので、なぜテストフレームワークを使用してもうまくいかないのだろうかと思っていました。ここで
は一例です:
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS = True,
CELERY_ALWAYS_EAGER = True,
BROKER_BACKEND = 'memory',)
def test_celery_do_work(self):
result = myapp.tasks.celery_do_work.AsyncResult('blat')
applied_task = myapp.tasks.celery_do_work.apply_async((), task_id='blat')
applied_task.wait()
# THIS SUCCEEDS
self.assertTrue(applied_task.successful())
# THIS FAILS
self.assertTrue(result.successful())
は、それがすぐに実行されますので、ALWAYS_EAGERオプションがAsyncResult機能を無効に使用していますか?もしそうなら、AsyncResultのステータスチェックをユニット化できる方法はありますか?私がALWAYS_EAGERオプションを取り出そうとすると、テストは決して実行されないので、私は紛失してしまいます。
ありがとうございます!
私はそれがおそらくそのようなものだと考えましたが、EagerResultオブジェクトについてはわかりませんでした。彼らはいつもAsyncResultsになると思っていました。情報をありがとう! – oiez
単体テストそのものから作業を開始するには[this](https://stackoverflow.com/a/43648921/1617295)を読むことをお勧めします。 – Raffi