15

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

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

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>]

也许我已经工作了很长时间并且错过了一些非常明显的东西?

4

1 回答 1

20

也许我应该真正阅读文档。

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

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

于 2011-03-24T20:34:47.507 回答