Подражать django.core.mail.send_mail в другой функции

Я хочу поиздеваться над send_mail() django так, чтобы он выбрасывал исключение. Мой подход выглядит так, как показано ниже, но письма все еще отправляются, и никаких исключений не возникает. Это работает, если я вызываю send_mail() непосредственно в менеджере контекста, но не работает, если я вызываю функцию, которая импортирует, а затем использует send_mail()

# test.py

import handle_alerts
from unittest import mock

class MailTest(TestCase):
  def test_handle_alerts(self):
     with mock.patch("django.core.mail.send_mail") as mocked_mail:
        mocked_mail.side_effect = Exception("OH NOES")

        handle_alerts()  # ends up using send_mail
# handle_alerts.py

from django.core.mail import send_mail

def handle_alerts():
  send_mail(....)  # valid call goes here

Вы должны высмеивать использование функции, а не ее объявление.

class MailTest(TestCase):
    def test_handle_alerts(self):
        with mock.patch("handle_alerts.send_mail") as mocked_mail:
            mocked_mail.side_effect = Exception("OH NOES")

            handle_alerts()
Вернуться на верх