如何在 Django Nose 测试期间停止任务触发?
How to stop Tasks firing during Django Nose tests?
我有一个使用 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
所以测试不会 运行 任务?
你已经完成了一半:) 对于测试,我通常只是一个全局变量(Django 案例中的设置参数)。或环境变量告诉一个人应该跳过被测应用程序的某些方面。仅当没有其他方式与底层代码进行社区交流时,如设置 class 变量或标志。
在设置中 - 为 运行 测试创建一个单独的设置文件:
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
我有一个使用 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
所以测试不会 运行 任务?
你已经完成了一半:) 对于测试,我通常只是一个全局变量(Django 案例中的设置参数)。或环境变量告诉一个人应该跳过被测应用程序的某些方面。仅当没有其他方式与底层代码进行社区交流时,如设置 class 变量或标志。
在设置中 - 为 运行 测试创建一个单独的设置文件:
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