如何让django芹菜写入测试数据库进行功能测试?

rou*_*uan 8 python django selenium mongodb django-celery

我正在研究Django应用程序.我们使用celery将写入队列排队到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
Run Code Online (Sandbox Code Playgroud)

这模仿了AsyncResult在运行功能测试套件时不通过消息队列发送任何内容的行为.(有关详细信息,请参阅http://celery.readthedocs.org/en/2.4/configuration.html#celery-always-eager.)

该解决方案可能不适用于功能测试,因为它会切断其中一个应用层.

Fil*_*vić 0

我建议您看看LiveServerTestCase是否使用自动化测试客户端来运行功能测试。

然后确保您有一个单独的设置模块来运行测试,该模块可以正确配置 Celery 以使用项目的数据库进行传输