【发布时间】:2012-10-09 17:45:01
【问题描述】:
我正在开发一个 Django 应用程序。我们正在使用 celery 对 Mongo 数据库的写入进行排队。我正在尝试为一个在 celery 中排队的函数编写一个功能测试(使用 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。)
此解决方案可能不适合功能测试,因为它会切断其中一个应用程序层。
【问题讨论】:
标签: python django mongodb selenium django-celery