Django 1.3:测试期间发件箱为空

时间:2011-03-24 19:32:43

标签: django django-testing

也许我不明白outbox是如何工作的,但是从我理解的文档中,它只是在测试期间捕获了所有外发邮件。

我使用新应用程序创建了一个新项目,并添加了以下代码。

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

class SimpleTest(TestCase):
    def test_basic_addition(self):
        send_mail('Subject here', 
                  'Here is the message.', 
                  'from@example.com', 
                  ['to@example.com'], 
                  fail_silently=False)

        self.assertEqual( len( outbox ), 1 )

当我运行python manage.py test app_name时,它会给出一个断言错误0!= 1.我做错了什么?

更新

如果我导入django.core.mail并使用mail.outbox它确实有效,这很奇怪。

尝试比较outbox和mail.outbox的直接导入,它们都会给出不同的结果

from django.core import mail
from django.core.mail import send_mail, outbox     
...
self.assertEqual(outbox, mail.outbox)

返回:

- []
+ [<django.core.mail.message.EmailMessage object at 0x1e1fd90>]

也许我一直在努力做多,并且遗漏了一些非常明显的东西?

1 个答案:

答案 0 :(得分:18)

也许我应该阅读文档。

  

outbox属性是一个特殊属性,仅在使用locmem电子邮件后端时创建。它通常不作为django.core.mail模块的一部分存在,而您无法直接导入

https://docs.djangoproject.com/en/dev/topics/testing/overview/#django.core.mail.django.core.mail.outbox