使用lettuce,如何验证Djangoweb应用发送的邮件内容正确?
我有一个基于Django的网页应用,需要在用户尝试更改注册邮箱时发送确认邮件。这个功能已经实现了,但用来检查邮件内容的测试却失败了。
为了验证这个功能,我打算使用文件后端(EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'),然后在我的测试步骤中检查文件的内容。
当我“正常”运行应用(比如通过manage.py runserver)时,邮件文件会按预期生成。但是当我通过lettuce运行(manage.py harvest)时,网站似乎正常运行(我用Selenium来操作它),但没有生成邮件文件。
我漏掉了什么吗?是否有某个设置(比如在terrain.py文件中)需要使用,以便在测试过程中也能使用文件后端?
1 个回答
4
你可以使用 django.core.mail.outbox
,具体的用法可以参考 Django 的文档,链接在这里:https://docs.djangoproject.com/en/dev/topics/testing/#email-services
from django.core import mail
assert len(mail.outbox) == 1
assert mail.outbox[0].subject == 'Subject here'
Lettuse 使用了 django.test.utils.setup_test_environment
,这个方法会把邮件发送的后台设置成 locmem 邮件后台。