私はDjangoアプリケーションに取り組んでいます。セロリを使用して、Mongo データベースへの書き込みをキューに入れています。セロリで何かをキューに入れる関数の機能テスト (Selenium を使用) を作成しようとしています。
問題は、セロリがテスト データベースではなく、メインの Mongo データベースに書き込むことです。テスト データベースに書き込みを行うセロリのインスタンスで動作するように機能テストを設定するにはどうすればよいですか?
として使用'django_nose.NoseTestSuiteRunner'
していますTEST_RUNNER
。
更新:
テストにセロリの別のインスタンスを使用する方法を理解できませんでしたが、機能テストのためにセロリをバイパスする方法を見つけました。
私の中でsettings.py
:
FUNC_TEST_COMMAND=['functional']
func_test_command = filter(lambda element: element in FUNC_TEST_COMMAND, sys.argv)
if len(func_test_command) > 0:
CELERY_ALWAYS_EAGER = True
AsyncResult
これは、機能テスト スイートの実行時にメッセージ キューを介して何も送信しない の動作を模倣します。(詳細については、 http://celery.readthedocs.org/en/2.4/configuration.html#celery-always-eagerを参照してください。)
このソリューションは、アプリケーション層の 1 つを切り取るため、おそらく機能テストには理想的ではありません。