在我的settings.py,我把:测试Django的电子邮件后端
EMAIL_BACKEND = 'mailer.backend.DbBackend'
因此,即使从from django.core.mail import send_mail
导入时,该send_mail
功能还是排队在数据库中的电子邮件,而不是直接将其发送的。
实际运行时的网站,但测试网站时,并访问一些网页触发电子邮件它工作得很好,电子邮件不再排队了:
def test_something(self):
...
# Check no emails are actually sent yet
self.assertEquals(len(mail.outbox), 0) # test fails here -- 2 != 0
# Check queued emails.
messages = Message.objects.all()
self.assertEquals(messages.count(), 2) # test would also fail here -- 0 != 2
...
为什么它似乎并没有在测试时使用后端? (从mailer
进口send_mail
本身获得测试通过,但我真的不能改变其他的邮件应用程序的进口喜欢django-templated-email
)
仅供参考,请参阅http://stackoverflow.com/questions/11919118/replace-django-core-mail-send-mail-across-all-apps。 – alecxe 2013-04-24 08:45:31
@AlexanderAfanasiev是的,我用'runserver'运行网站时已经有了后端工作;无论出于何种原因,它在进行单元测试时都不起作用。 – wrongusername 2013-04-24 17:45:19