创新互联Django4.0教程:Django4.0测试工具-邮件服务

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

我们提供的服务有:网站建设、做网站、微信公众号开发、网站优化、网站认证、浑源ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的浑源网站制作公司

测试运行器通过透明的将正常的邮件后端替换为测试后端来实现。

django.core.mail.outbox

在测试运行过程中,每一封发出的邮件都会保存在 ​django.core.mail.outbox​ 中。这是所有已经发送的 ​EmailMessage ​实例的列表。 ​outbox ​属性是一个特殊的属性,只有在使用 ​locmem ​邮件后端时才会创建。它通常不作为 ​django.core.mail​ 模块的一部分存在,你也不能直接导入它。下面的代码展示了如何正确访问这个属性。

下面是一个检查 ​django.core.mail.outbox​ 长度和内容的测试示例:

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

class EmailTest(TestCase):
    def test_send_email(self):
        # Send message.
        mail.send_mail(
            'Subject here', 'Here is the message.',
            'from@example.com', ['to@example.com'],
            fail_silently=False,
        )

        # Test that one message has been sent.
        self.assertEqual(len(mail.outbox), 1)

        # Verify that the subject of the first message is correct.
        self.assertEqual(mail.outbox[0].subject, 'Subject here')

在 Django ​*TestCase​ 中的每个测试开始时,测试发件箱都会被清空。要手动清空发件箱,将空列表分配给 ​mail.outbox​:

from django.core import mail

# Empty the test outbox
mail.outbox = []

网站标题:创新互联Django4.0教程:Django4.0测试工具-邮件服务
文章地址:http://www.shufengxianlan.com/qtweb/news41/190541.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联