我正在开发一个 Django 应用程序。我们正在使用 celery 对 Mongo 数据库的写入进行排队。我正在尝试为一个在芹菜中排队的函数编写一个功能测试(使用 Selenium)。
问题是 celery 写入主 Mongo 数据库而不是测试数据库。如何设置我的功能测试以使用写入测试数据库的 celery 实例?
我们'django_nose.NoseTestSuiteRunner'
用作我们的TEST_RUNNER
.
更新:
我无法弄清楚如何使用另一个 celery 实例进行测试,但我找到了一种绕过 celery 进行功能测试的方法。
在我的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。)
此解决方案可能不适合功能测试,因为它会削减其中一个应用程序层。