1
我需要测试该邮件是从Django 1.8应用程序发送的;文件清楚说明如何做到这一点,例如Django测试发送电子邮件
https://docs.djangoproject.com/en/dev/topics/testing/tools/#email-services
下面是一些代码,因此它应该足够了:
from myapp.utils.mailutils import mail as mymail
from django.core import mail
def testThisFails(self):
user = User.objects.filter(id=1).__getitem__(0)
mymail(user,'Test Message','Test message content, please ignore...')
self.assertEquals(len(mail.outbox), 1)
self.assertEquals(mail.outbox[0].subject, 'Test Message')
...很明显,我有适当的测试以及。无论如何,我什么也没得到,但这样的:
self.assertEquals(len(mail.outbox), 1)
AssertionError: 0 != 1
这里有一个类似的问题提的是,locmail后端需要使用:
Django 1.3: Outbox empty during tests
所以,我说这settings.py中:
TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test'
if TESTING:
EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
...没有运气。即使省略if TESTING
也没有解决该问题。有没有什么方法可以让我的测试直接使用这个后端?
道歉的延迟回复,并感谢您的答案。不幸的是我仍然有问题,所以也许除了电子邮件后端设置以外还有其他问题。尽管如此,它可能并不完全清楚。 – knirirr
看起来我设法让一封电子邮件工作。看起来用户对象没有正常工作(可能是夹具的问题)。当我在设置中使用您的修复和发送邮件时,并未先尝试加载用户时,我得到一个通过。 – knirirr