我正在尝试在 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)
请您参考如下方法:
在单元测试期间,django.core.mail 使用 backends.locmem.EmailBackend 覆盖所有 EMAIL 设置
在测试期间有处理电子邮件的规定。 https://docs.djangoproject.com/en/1.7/topics/testing/tools/#email-services
