【发布时间】:2013-04-17 16:50:24
【问题描述】:
在我的 settings.py 中,我输入了:
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)
【问题讨论】:
-
@AlexanderAfanasiev 是的,当使用
runserver运行网站时,我的后端工作正常;无论出于何种原因,它在进行单元测试时都不起作用。
标签: django unit-testing testing django-mailer