更改单个单元测试用例的芹菜设置task_always_eager



我有一个特定的测试用例,其中我利用了芹菜后端,所以我需要task_always_eager设置为 false,否则我会得到一个运行时错误。但是,问题是我需要以设置为 true 运行所有其他测试用例,因此我尝试仅针对此测试用例使用芹菜标记注释将芹菜配置task_always_eager设置为 false。但是,它看起来不像是在做任何事情。

这是我任务的骨架:

@pytest.mark.celery(task_always_eager=False)
def test_task(self):
# do some stuff to start a task
do_stuff()
# do some stuff to get info on a task
get_info()
# assertions

错误:

def _ensure_not_eager(self):
if self.app.conf.task_always_eager:
raise RuntimeError(
"Cannot retrieve result with task_always_eager enabled")
E          RuntimeError: Cannot retrieve result with task_always_eager enabled
/usr/local/lib/python3.6/site-packages/celery/backends/base.py:334: RuntimeError

TLDR:在这个测试用例中,我做错了什么,将task_always_eager设置为 false,因为它在测试运行时没有更改它?

Celery 的配置对象是动态可更新的,因此您可以使用以下内容对其进行更新:

celery.conf.task_always_eager = False

celery.conf.CELERY_ALWAYS_EAGER = False,如果您使用的是预4.0芹菜

您可以即时执行此操作,也可以基于每个测试或在"设置"操作期间执行此操作。

相关内容

  • 没有找到相关文章