我正在尝试在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)
答案 0 :(得分:3)
在单元测试期间,django.core.mail会使用backends.locmem.EmailBackend
覆盖所有EMAIL设置
在测试期间有处理电子邮件的规定。 https://docs.djangoproject.com/en/1.7/topics/testing/tools/#email-services