2012-10-19 47 views
8

我正在研究一個Django應用程序。我們使用芹菜隊列寫入我們的Mongo數據庫。我正在嘗試編寫一個功能測試(使用Selenium)來實現一個在芹菜中排隊的功能。我如何讓django芹菜寫入我的功能測試的測試數據庫?

的問題是,芹菜寫到主Mongo的數據庫,而不是測試數據庫。我如何設置我的功能測試來處理寫入測試數據庫的芹菜實例?

我們使用'django_nose.NoseTestSuiteRunner'作爲我們TEST_RUNNER

UPDATE

我一直無法弄清楚如何使用芹菜的另一個實例的測試,但我已經找到一種方法來繞過芹菜的功能測試。

在我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

使用CELERY_ALWAYS_EAGER =真確實繞過芹菜的asynchornous處理。爲了寫入測試數據庫,您需要使用測試數據庫的連接設置來啓動celeryd worker。

相關問題