如何在django中运行测试时发送电子邮件?

时间:2014-09-12 01:24:04

标签: python django email testing

我正在尝试在django中运行测试时发送电子邮件。

当我运行发送电子邮件的测试时,所有内容都会运行而不会出错,但实际的电子邮件不会发送。

我相信test_send_mail中的代码有效,因为我已使用manage.py runserver调用它,并且电子邮件显示在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)

1 个答案:

答案 0 :(得分:3)

在单元测试期间,django.core.mail会使用backends.locmem.EmailBackend覆盖所有EMAIL设置

在测试期间有处理电子邮件的规定。 https://docs.djangoproject.com/en/1.7/topics/testing/tools/#email-services