私は次の設定をしています:
- Django-Celery プロジェクト A はタスクを登録します
foo
- プロジェクト B: Celery の send_task を使用して呼び出します
foo
- プロジェクト A とプロジェクト B の構成は同じです: SQS、シリアライズ用の msgpack、gzip など。
- 各プロジェクトは異なる github リポジトリに存在します
Celery をまったく使用せずに、プロジェクト A で「foo」への呼び出しを単体テストしfoo(1,2,3)
、結果をアサートしました。私はそれが機能することを知っています。
プロジェクト B の send_task が正しいパラメーターを送信することを単体テストしました。
私がテストしておらず、アドバイスが必要なのは、2 つのプロジェクト間の統合です。次のような単体テストが必要です。
- プロジェクト A のコンテキストでワーカーを開始する
- プロジェクト B のコードを使用してタスクを送信する
- 最初のステップで開始されたワーカーが、2 番目のステップで送信したパラメーターを使用してタスクを取得し、
foo
関数が期待される結果を返したことをアサートします。
これは、python のサブプロセスを使ってワーカーの出力を解析することでハッキングできそうですが、それは醜いです。このような場合の単体テストの推奨されるアプローチは何ですか? 共有できるコード スニペットはありますか? ありがとう!