我有一个测试,我使用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
这样测试不会运行任务吗?
答案 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