首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-q的模拟async_task

Django-q的模拟async_task
EN

Stack Overflow用户
提问于 2022-01-10 10:27:32
回答 1查看 328关注 0票数 1

我正在使用django-q,目前正在为我现有的任务添加使用mock的测试。我可以轻松地为每个任务创建测试,而不依赖于django,但我的任务之一是调用另一个async_task。下面是一个例子:

代码语言:javascript
复制
import requests
from django_q.tasks import async_task

task_a():
    response = requests.get(url)
    # process response here

    if condition:
        async_task('task_b')

task_b():
    response = requests.get(another_url)

下面是我测试它们的方法:

代码语言:javascript
复制
import requests

from .tasks import task_a
from .mock_responses import task_a_response

@mock.patch.object(requests, "get")
@mock.patch("django_q.tasks.async_task")
def test_async_task(self, mock_async_task, mock_task_a):
    mock_task_a.return_value.status_code = 200
    mock_task_a.return_value.json.return_value = task_a_response

    mock_async_task.return_value = "12345"

    # execute the task
    task_a()

    self.assertTrue(mock_task_a.called)
    self.assertTrue(mock_async_task.called)

我知道的一个事实是,async_task返回任务ID,因此行mock_async_task.return_value = "12345"。但是,在运行测试之后,mock_async_task返回False,任务将被添加到队列中(我可以从服务器看到一堆01:42:59 [Q] INFO Enqueued 1 ),这正是我想要避免的。有什么办法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-20 15:21:52

为了防止任务被添加到队列中,需要在测试运行时将配置sync更改为True。您可以找到有关配置这里的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70650921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档