python - 如何让 django celery 写入测试数据库以进行功能测试?

我正在开发一个 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 了解更多信息。)

此解决方案可能不适合功能测试,因为它会切断其中一个应用程序层。

最佳答案

使用 CELERY_ALWAYS_EAGER = True 确实绕过了 Celery 的异步处理。为了写入测试数据库,你需要使用测试数据库的连接设置来启动你的 celeryd worker。

https://stackoverflow.com/questions/12968685/

相关文章:

mongodb - 对大量数据使用 Mongo 地理空间查询

javascript - 不确定如何在 Express/MongoDB 应用程序中处理数据访问对象/

mongodb - .NET 驱动程序与 LINQ : NotSupportedException:

mongodb - 使用 pymongo 将 MongoDB 导出为 CSV

spring - 蒙戈 : repositories no longer works

java - 在等待与 WritableServerSelector 匹配的服务器时超时 30000

mongodb - Mongoid 没有服务器可用匹配首选项

mongodb - Mongos认证

mongodb - MongoDB 中 V8 JavaScript 引擎对 map reduce 的

mongodb - 使用 SSL 的 mongodump 和 mongorestore