問題タブ [python-huey]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Huey タスク コンシューマを使用した Django: TestCase メソッドが実際の DB に触れる
関連する Huey docsで説明されているように構成された、Huey タスク キューを使用する Django アプリケーションを作成しています。いくつかの基本的なテストを実行して、独自のプロセスでタスク コンシューマーを実行するコマンドをimmediate
試行する設定を無効にしました。manage.py run_huey
TestCase
次に、データベースに書き込みを行う Huey タスクを呼び出すDjangoを実行しました (このタスクは、 内TestCase
で作成され、テスト後に破棄される一時データベースである必要があります)。タスクは Huey プロセスで消費され、期待どおりに機能しました。ただし、テストによって実行されたタスクで作成されたオブジェクトは、実際の (開発) データベースに書き込まれました。
その理由は理解できます。テストの実行時に Django が偽のデータベースをスピンアップするために行うどんな魔法も、Huey コンシューマ プロセスに到達しません。Huey docs によると、デフォルトの動作は、Django のDEBUG
設定が有効になっている場合、即時モード (スケジュール データベースや別のコンシューマー プロセスを実行せずにキューに入れられるとすぐにタスクを実行する) で実行されることを理解しています。手足。
ただし、即時モードでは使用できない標準の Huey 機能の一部 (将来発生するタスクのスケジューリング、別のスレッドまたはプロセスでのより重みのある計算の実行) は、テストまたは実験したいものです。開発中。したがって、私の質問: これを達成するために Django で Huey を構成する良い方法はありますか? Huey タスクが別のプロセスで消費されるときに、TestCase のデータベースのモックが意図したとおりに機能するようにするには?
(私は Django、テスト、ほとんどすべてを初めて使用するので、これはテストに関係するべき動作の範囲外であるという議論を喜んで聞いています。)