首页 > 解决方案 > 在单元测试期间跳过发送电子邮件功能和 celery 任务

问题描述

我有一个 Django 视图,我想对它进行单元测试,但问题出在函数的某些行中,它调用了另一个具有发送电子邮件功能的函数,并且这个发送电子邮件函数内部有一个 celery 任务。我不知道该怎么做才能超越这个函数调用,因为当调试器点击发送电子邮件函数时,它会停止并且什么都不做,我认为这是因为 celery 任务。由于这个问题,我的单元测试无法完全运行。
所以如果有人能告诉我该怎么做,我会很高兴。我自己的解决方案是模拟发送电子邮件功能,但它不起作用。我不知道现在该怎么办。
这是查看功能期间发生的事情的代码示例。

view_funtion():
...
function_a is called here
function_a():
...
send_email_function is called here
send_email_function():
some code here and initialization of the email template
celery_task.delay()

如果我应该添加更多细节,请告诉我。谢谢。
更新
这是单元测试功能

@patch('path_to_send_email_function')
    def test_view_function(self, mock_send_email):
       mock_send_email.return_value = None
       ...

我还使用用于 Django 休息框架的 API 请求工厂来测试视图。执行步骤在测试的主体中调用视图函数并执行,直到调用 function_a,然后在 function_a 的主体中调用 send_email_function。

标签: pythonunit-testingdjango-rest-frameworkmockingcelery

解决方案


推荐阅读