0

我有一个使用 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

所以测试不运行任务?

4

1 回答 1

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
于 2015-05-11T11:05:51.633 回答