我正在为联系人电子邮件视图编写一些测试,我发现当我使用假电子邮件设置(email_HOST_USER和email_HOST_密码)时不会引发BadHeaderError。在生产中,它像预期的那样工作,当我正确配置电子邮件时成功,当我使用假电子邮件时引发异常。不管我使用什么样的电子邮件设置,测试总是成功的。在
我尝试使用DEBUG=False来运行测试,但是得到了相同的输出。我不知道是什么导致了这种行为。在
这是我正在测试的视图(我在这里对其进行了简化,剩下的代码只是关于获取POST数据并对其进行验证,正如预期的那样工作):
# home.views.py
def contact(request):
success = False
error = ''
try:
email_message = (
"MESSAGE SENT BY: " +
contact_email + " (" +
contact_name + ")"
"\n_______________________________"
"_________________________________"
"__\n\n\n" +
contact_message
)
send_mail(
contact_subject,
email_message,
settings.DEFAULT_FROM_EMAIL,
[settings.DEFAULT_FROM_EMAIL]
)
success = True
except BadHeaderError:
error = (
"Invalid header found."
)
except smtplib.SMTPException:
error = (
"A connection error occurred and "
"your message has not been sent."
)
response = {'success': success, 'error': error}
return HttpResponse(json.dumps(response),
content_type='application/json')
更新-由于@mata的评论和我自己对模拟库的研究,这些测试最终按预期工作:
^{pr2}$
在测试会话期间,测试运行程序sets up是一个本地内存后端(通过调用^{} ),它只是将已发送的邮件附加到
mail.outbox
而不是真正发送它们,因此更改电子邮件用户和密码设置不会产生效果。在另外,无效的用户和密码设置不应该生成BadHeaderError,只有在头包含换行符或回车符时才使用。在
相关问题 更多 >
编程相关推荐