我有一个使用dj芹菜的周期性任务。此任务正在查看数据库,如果有必要,它会进行相同的更改。正如您所知,"python manage.py test"创建了一个测试数据库,那么我如何在这个测试数据库中运行这个周期性任务呢?
我试着先运行:python manage.py测试
然后当我尝试运行以下时
python manage.py芹菜工人-linfo&
python manage.py芹菜节拍-linfo&
测试终止
您不需要运行芹菜工作程序或芹菜节拍,这不是真正好的单元测试。您正在尝试测试任务,因此应该隔离任务并对其进行测试。您需要使用CELERY_ALWAY_EAGER模式运行测试,或者只需在不使用异步模式的情况下从测试内部运行任务。
为了避免使用异步,只需像这样调用您的任务:
@celery.task
def task_to_test():
print('stuff')
def test:
task_to_test()
如果你做不到。覆盖您的设置以随时使用。
from tasks import task_to_test
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,
CELERY_ALWAYS_EAGER=True,
BROKER_MEMORY='memory',
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',}})
class MyTests(TestCase):
def test():
task_to_test.delay()