Dav*_*cic 165
Django测试框架有一些内置帮助程序,可以帮助您测试电子邮件服务.
来自docs的示例(简短版本):
from django.core import mail
from django.test import TestCase
class EmailTest(TestCase):
def test_send_email(self):
mail.send_mail('Subject here', 'Here is the message.',
'from@example.com', ['to@example.com'],
fail_silently=False)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(mail.outbox[0].subject, 'Subject here')
Run Code Online (Sandbox Code Playgroud)
kir*_*ril 12
如果您进行单元测试,最好的解决方案是使用django提供的内存后端.
EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
以使用它作为py.test夹具为例
@pytest.fixture(autouse=True)
def email_backend_setup(self, settings):
settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
在每次测试中,mail.outbox都会通过服务器重置,因此测试之间没有副作用.
from django.core import mail
def test_send(self):
mail.send_mail('subject', 'body.', 'from@example.com', ['to@example.com'])
assert len(mail.outbox) == 1
def test_send_again(self):
mail.send_mail('subject', 'body.', 'from@example.com', ['to@example.com'])
assert len(mail.outbox) == 1
Run Code Online (Sandbox Code Playgroud)
对于任何不需要发送附件的项目,我使用django-mailer,它具有所有出站电子邮件的好处,直到我触发他们的发送为止,甚至在他们被发送之后,他们随后被记录 -所有这些都在管理员中可见,这使您可以轻松快速地检查您通过电子邮件发送的代码试图触发到intertubes.
使用MailHog
受MailCatcher启发,易于安装。
使用Go构建-MailHog无需安装在多个平台上即可运行。
此外,它还有一个名为Jim的组件,MailHog Chaos Monkey,它使您能够测试发送的各种问题的电子邮件:
吉姆能做什么?
- 拒绝连接
- 限速连接
- 拒绝身份验证
- 拒绝发件人
- 拒绝收件人
在此处了解更多信息。
(与原始mailcatcher不同,它在发送带有 Emoji 表情符号的电子邮件时失败了,该电子邮件使用UTF-8编码,并且在当前版本中并未得到真正修复,MailHog可以正常工作。)
| 归档时间: |
|
| 查看次数: |
37449 次 |
| 最近记录: |