测试SEND_EMAIL不工作

问题描述:

我不知道为什么,当我运行测试它总是失败,Asse田:0 = 1 即使r的结果是1测试SEND_EMAIL不工作

class UserProfileTaskTest(TestCase): 

    def test_send_email(self): 
     subject = 'subject' 
     body = 'body' 
     from_email = '[email protected]' 
     recipient_list = ['[email protected]'] 

     r = send_mail(
      subject=subject, 
      message=body, 
      from_email=from_email, 
      recipient_list=recipient_list 
     ) 

     print(r) 

     self.assertEqual(len(outbox), 1) 
+0

什么是发件箱? – vZ10

+0

我敢打赌,他们正在像这样''从django.core.mail导入发件箱'导入它' – Brobin

+0

@Brobin是我导入它就像:)我刚刚开始学习Django我不知道这是一个特殊的属性。 – mengkheang

发件箱是特殊类型属性,不能直接导入,但当您使用电子邮件后端发送电子邮件时,则mail.outbox将作为列表并将电子邮件数据保存到发件箱列表中。因此,使用下面的示例为testmail发送或不发送。

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

class UserProfileTaskTest(TestCase): 
    def test_send_email(self): 
     subject = 'subject' 
     body = 'body' 
     from_email = '[email protected]' 
     recipient_list = ['[email protected]'] 
     mail.send_mail(
      subject=subject, 
      message=body, 
      from_email=from_email, 
      recipient_list=recipient_list 
     ) 
     self.assertEqual(len(mail.outbox), 1) 

当你运行上面的代码,你有初始mail.outbox = []

但发送电子邮件后,将其保存EmailMessage比如在列表中。

+0

谢谢!它的工作原理就是我没有阅读足够的文档https://docs.djangoproject.com/en/1.11/topics/testing/tools/#email-services – mengkheang