В моей settings.py, я поставил:Тестирование Django электронной почты бэкенд
EMAIL_BACKEND = 'mailer.backend.DbBackend'
Таким образом, даже при импорте из from django.core.mail import send_mail
, функция send_mail
еще очереди на электронную почту в базе данных вместо того, чтобы отправить его немедленно. не
Он работает так же хорошо, когда на самом деле работает на веб-сайте, но при тестировании веб-сайта, а также получить доступ к некоторым веб-страницам, которые вызывают сообщения электронной почты, сообщения электронной почты больше не в очереди больше:
def test_something(self):
...
# Check no emails are actually sent yet
self.assertEquals(len(mail.outbox), 0) # test fails here -- 2 != 0
# Check queued emails.
messages = Message.objects.all()
self.assertEquals(messages.count(), 2) # test would also fail here -- 0 != 2
...
Как же это, кажется, не использовать бэкэнд при тестировании? (Импортирования send_mail
из mailer
самих получают тесты, чтобы пройти, но я не могу изменить импорт других приложений рассылки как django-templated-email
)
FYI, см. Http://stackoverflow.com/questions/11919118/replace-django-core-mail-send-mail-across-all-apps. – alecxe
@AlexanderAfanasiev yes У меня есть бэкэнд, работающий при запуске сайта с 'сервером запуска '; он просто не работает при выполнении модульных тестов по любой причине. – wrongusername