Celery shared_task中的模拟方法调用

时间:2018-10-31 22:01:41

标签: python unit-testing mocking celery

我在模块tasks中有一个Celery shared_task,看起来像这样:

@shared_task
def task():
    from core.something import send_it
    send_it()

并且我正在编写一个尝试使用patch send_it方法的测试。到目前为止,我有:

from ..tasks import task


class TestSend(TestCase):

    @override_settings(CELERY_TASK_ALWAYS_EAGER=True)
    @patch("core.tasks.send_it")
    def test_task(self, send_it_mock):
        task()
        send_it_mock.assert_called_once()

运行此命令时,出现错误:AttributeError: <module 'core.tasks' from 'app/core/tasks.py'> does not have the attribute 'send_it'

出于绝望,我转而使用@patch("tasks.task.send_it"),因为导入发生在shared_task内,但是得到了类似的结果。有谁知道我可以如何有效地修补send_it呼叫?谢谢!

0 个答案:

没有答案