python - 在单元测试期间跳过发送电子邮件功能和 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。
解决方案
推荐阅读
- postgresql - docker中的数据库连接超时
- java - 每次在 firebase DB 中更改数据时都会调用 onDataChange()
- java - 如何解决原因:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 迁移到 Java 11(Openjdk-11.0.1)
- sql - 如何从两个不同的源表在单个表中插入值
- google-bigquery - BigQuery ML 无法识别数据中的标签列
- mysql - 从不同表中划分 2 个值的问题
- java - 将项目添加到文本文件
- sql - 是否有任何更快、更少资源消耗的查询用于相同目的?
- php - ReflectionException:类邮件程序不存在
- javascript - Javascript:尝试平滑自定义光标动画