我正在使用Lettuce来测试我的一个应用程序。
我正在测试一个模块,以检查我是否可以发送电子邮件。
我做了一些研究,并在Django文档中找到了一种简单的测试方法。
from django.core import mail
from django.test import TestCase
class EmailTest(TestCase):
def test_send_email(self):
# Send message.
mail.send_mail('Subject here', 'Here is the message.',
'from@example.com', ['to@example.com'],
fail_silently=False)
# Test that one message has been sent.
self.assertEqual(len(mail.outbox), 1)
# Verify that the subject of the first message is correct.
self.assertEqual(mail.outbox[0].subject, 'Subject here')
问题是我不断收到错误AttributeError: 'module' object has no attribute 'outbox'
。
从found开始,问题在于
Django服务器运行的过程与之不同 生菜脚本,这将使发件箱无法访问。
我做了一些研究,找到了可能的解决方案here。
这家伙说:
# in terrain.py
from lettuce import before, after, world
from django.conf import settings
@before.handle_request
def override_mail_settings(httpd, server):
settings.EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
但我不知道我的terrain.py
等价物是什么。我在steps.py
文件中试过,但它没有用。
有谁知道如何解决这个问题?
答案 0 :(得分:2)
经过多方研究后,我设法找到了here我问题的答案。
我唯一需要做的就是编辑settings.py
并添加以下行:
EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'