Используя этот ответ в качестве модели, я тестирую следующий метод, который создает экземпляр класса (EmailMultiAlternatives
):
admintools / emailer.py
from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from django.utils.html import strip_tags
def send_email(template_path, context, subject_line, from_email, to=[], cc=[], bcc=DEFAULT_BCC_EMAILS):
msg_html = render_to_string(template_path, context)
msg_plain = strip_tags(msg_html)
email = EmailMultiAlternatives(subject_line, msg_plain, from_email, to, cc=cc, bcc=bcc)
email.attach_alternative(msg_html, "text/html")
email.send()
с использованием test.py :
from unittest.mock import patch
from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from django.test import TestCase
from admintools.emailer import send_email
class EmailerTestCase(TestCase):
@patch('django.core.mail.EmailMultiAlternatives')
def test_send_email(self, mockEmailMultiAlternatives):
context = {}
template_path = "emails/closings/seller_pre_close_update_prompt.html"
msg_plain = render_to_string(template_path, context)
to = ['']
cc = ['']
send_email(template_path, {}, 'subject', "from", to, cc=cc)
mockEmailMultiAlternatives.assert_called()
Я получаю AssertionError: Expected 'EmailMultiAlternatives' to have been called.
, хотя email
успешно создан во время выполнения теста (проверено print(email)
сразу после возвращения экземпляра <django.core.mail.message.EmailMultiAlternatives object at 0x7fbf4bb4b590>
).
Что может быть причиной провала утверждения, даже если создается экземпляр EmailMultiAlternatives
?