在 Django 上执行测试时避免将 django.core.mail.outbox 作为电子邮件后端

rei*_*man 5 python django

在我的中settings.py,我有关于我的 smtp 电子邮件后端的配置:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.zoho.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'user@domain.com'
EMAIL_HOST_PASSWORD = 'user'
DEFAULT_FROM_EMAIL = 'contact@domain.com'
Run Code Online (Sandbox Code Playgroud)

当我在开发期间运行服务器时(即python manage.py runserver),电子邮件正常发送。但是当我运行验收测试(即python manage.py test functional_tests)时,不会发送电子邮件。

阅读文档,我发现Django假设在测试期间为虚拟盒子发送电子邮件是一件好事,但文档没有告诉我如何禁用此功能(我确实想通过 smtp 发送电子邮件)运行测试时)。

有人知道在运行测试时我必须做什么才能通过 smtp 发送电子邮件吗?

提前致谢。

Ala*_*air 5

使用override_settings装饰器。

from django.test import override_settings

class TestView(TestCase):
    @override_settings(EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend')
    def test_view(self):
       ... 
Run Code Online (Sandbox Code Playgroud)

  • 你复制了我的错字。override 中只有两个“r”。 (2认同)