使用lettuce,如何验证Djangoweb应用发送的邮件内容正确?

2 投票
1 回答
541 浏览
提问于 2025-04-17 04:29

我有一个基于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 邮件后台。

撰写回答