【问题标题】:My first test for a celery task我对芹菜任务的第一次测试
【发布时间】:2018-11-06 16:53:28
【问题描述】:

我是新手,我不知道,我需要你的帮助。我有一部分 API 代码用于保存对象并在完成后发送 SMS。它是如何测试的?我会很感激你的帮助。谢谢!

看起来像这样:

tasks.py/

@shared_task
send_sms(addr, text):
    ...


views.py/

def mydef():
     my_objs_list = MyModel.values().filter(my_flag=False) # addr list
     for item in my_objs_list:
         send_sms.delay(str(item), text)
     my_objs_list.update(my_flag=True)

【问题讨论】:

  • 您的意思是要创建一个单元测试吗?还是您想通过 HTTP 请求执行视图来尝试一下?

标签: django python-3.x django-rest-framework mocking celery-task


【解决方案1】:

您需要模拟延迟方法并针对您传递的任何参数进行断言:

@override_settings(CELERY_ALWAYS_EAGER=True)
@mock.patch('project.tasks.send_sms.delay')
def test_view(self, send_sms):
    ...
    send_sms.assert_called_with('item-value-1', 'text-value-1')
    send_sms.assert_called_with('item-value-2', 'text-value-2')

【讨论】:

    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2015-05-25
    • 2014-02-11
    • 1970-01-01
    • 2017-05-24
    • 2014-12-04
    相关资源
    最近更新 更多