也许我不明白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>]
也许我一直在努力做多,并且遗漏了一些非常明显的东西?
答案 0 :(得分:18)
也许我应该阅读文档。
outbox属性是一个特殊属性,仅在使用locmem电子邮件后端时创建。它通常不作为django.core.mail模块的一部分存在,而您无法直接导入。