8

私は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 つを切り取るため、おそらく機能テストには理想的ではありません。

4

2 に答える 2

1

CELERY_ALWAYS_EAGER = Trueを使用すると、Celeryの非同期処理が実際にバイパスされます。テストデータベースに書き込むには、テストデータベースへの接続設定を使用してcelerydワーカーを起動する必要があります。

于 2012-10-31T22:18:18.277 に答える