从测试中发送电子邮件

时间:2016-05-30 17:11:50

标签: django

Django 1.9.6

你能帮我理解这里发生的事吗?在settings.py中,我已经组织了发送邮件的所有内容。

即:

EMAIL_HOST = 'smtp.mail.ru'
EMAIL_PORT = 2525
EMAIL_HOST_USER = 'ggggggg@mail.ru'
EMAIL_HOST_PASSWORD = 'ggggggg'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'ggggggg@mail.ru'
SERVER_EMAIL = 'ggggggg@mail.ru'

然后我准备了一个测试:

from django.test import TestCase
from django.core.mail import send_mail

class GeneralTest(TestCase):

    def test_sending_email(self):
        number_of_successfully_delivered_messages = send_mail("Subject mail", 
                                                              "Message mail", 
                                                              'tttt@mail.ru', 
                                                              ['ggggg@mail.ru'])
        self.assertEqual(number_of_successfully_delivered_messages, 1)

测试通过。但电子邮件并没有发给我。当我在django shell中试用它时,电子邮件就会到达。

你能评论一下这里发生了什么吗?我可以在文档中找到关于这种情况的内容吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

来自文档:

  

如果您的任何Django视图使用Django的电子邮件功能发送电子邮件,您可能不希望每次使用该视图运行测试时都发送电子邮件。出于这个原因,Django的测试运行器会自动将所有Django发送的电子邮件重定向到虚拟发件箱。这使您可以测试发送电子邮件的各个方面 - 从发送到每封邮件内容的邮件数量 - 而无需实际发送邮件。

https://docs.djangoproject.com/en/1.9/topics/testing/tools/#topics-testing-email

这是一件好事,因为它允许您使用电子邮件进行大量单元测试,而无需实际发送所有这些可能数百封电子邮件。