2014-09-12 2 views
2

Я пытаюсь отправить электронное письмо во время выполнения тестов в 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) 
+0

Пункт модульного тестирования состоит в том, что он изолирован от любых внешних зависимостей. Электронная почта примерно такая же внешняя, как и она. Как указывает Джон, вы должны использовать встроенные средства тестирования для проверки функциональности электронной почты. –

ответ

2

Во модульном тестировании django.core.mail перекрывает все настройки электронной почты с backends.locmem.EmailBackend

Существует положения для обработки сообщений электронной почты во время тестирования. https://docs.djangoproject.com/en/1.7/topics/testing/tools/#email-services

Смежные вопросы