Я пытаюсь отправить электронное письмо во время выполнения тестов в django.Как отправить письмо во время выполнения тестов в django?
Когда я запускаю тест, который отправляет электронное письмо, все работает без ошибок, но фактическое письмо не отправляется.
Уверен, что код в test_send_mail
работает, потому что я назвал его с помощью управляющего сервера. E-mail появляется во входящих почтовых ящиках recipient_list
. Это заставляет меня подозревать, что django делает что-то, чтобы предотвратить отправку электронной почты во время тестирования. Верно ли мое подозрение? Как отключить эту функцию, если она существует? В качестве альтернативы, где я ошибаюсь в тестовом коде?
test_email.py:
from django.test import TestCase
from django.core.mail import send_mail
class TestEmail(TestCase):
def test_send_mail(self):
subject = 'test email'
message = 'Sent by test_email.py.'
from_email = '...'
recipient_list = [...]
n_sent = send_mail(subject, message, from_email, recipient_list, fail_silently=False)
self.assertEqual(n_sent, 1)
Пункт модульного тестирования состоит в том, что он изолирован от любых внешних зависимостей. Электронная почта примерно такая же внешняя, как и она. Как указывает Джон, вы должны использовать встроенные средства тестирования для проверки функциональности электронной почты. –