如何在Django Nose测试期间停止任务触发?

时间:2015-05-11 10:40:56

标签: python django django-nose

我有一个测试,我使用Django Nose。在模型创建过程中,我有一个被激活的Celery任务。

def save(self, *args, **kwargs):
   celery_app.send_task('test.apps.action',
                                 args=["BB",
                                       self.user.id,
                                       ], kwargs={})

然而,当我运行我的测试时,我不希望它运行Celery任务!我该怎么办......

def save(self, *args, **kwargs):

   if running_not_nose_tests:

       celery_app.send_task('test.apps.action')
   else:
       pass

这样测试不会运行任务吗?

1 个答案:

答案 0 :(得分:1)

你得到它的一半:)对于测试,我通常只是一个全局变量(Django案例中的设置参数)。或环境变量告诉一个应该跳过测试下的应用程序的某些方面。这只有在没有其他方式与社区一起使用底层代码时,例如设置类变量或标志。

在设置中 - 创建一个单独的设置文件以运行测试:

SKIP_TASKS = True

然后:

from django.conf import settings

def save(self, *args, **kwargs):

   if not settings.SKIP_TASKS:

       celery_app.send_task('test.apps.action')
   else:
       pass

或者来自带有环境变量的命令行:

SKIP_TASKS=true python manage.py test

import os

def save(self, *args, **kwargs):

   if not os.environ.get("SKIP_TASKS"):

       celery_app.send_task('test.apps.action')
   else:
       pass