我在模块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
呼叫?谢谢!