Skip to main content
 首页 » 编程设计

python之在 Django 中运行测试时如何发送电子邮件

2024年08月27日37cloudgamer

我正在尝试在 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