2016-05-30 299 views
0

Django 1.9.6從測試發送電子郵件

你能幫我理解這裏發生了什麼嗎?在settings.py中,我組織了一切發送郵件。

即:

EMAIL_HOST = 'smtp.mail.ru' 
EMAIL_PORT = 2525 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'ggggggg' 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = '[email protected]' 

然後我已經準備了試驗:

from django.test import TestCase 
from django.core.mail import send_mail 

class GeneralTest(TestCase): 

    def test_sending_email(self): 
     number_of_successfully_delivered_messages = send_mail("Subject mail", 
                   "Message mail", 
                   '[email protected]', 
                   ['[email protected]']) 
     self.assertEqual(number_of_successfully_delivered_messages, 1) 

,則測試通過。但是電子郵件並不屬於我。當我在django shell中嘗試它時,電子郵件到達。

您能評論一下這裏發生了什麼,以及在哪裏可以找到關於這種情況的文檔?

預先感謝您。

回答

0

從文檔:

如果您有任何意見的Django Django的使用的電子郵件功能發送電子郵件,你可能不希望每次運行使用視圖測試時間發送電子郵件。出於這個原因,Django的測試運行器會自動將所有Django發送的電子郵件重定向到一個虛擬發件箱。這使您可以測試發送電子郵件的每個方面 - 從發送到每封郵件內容的郵件數量 - 而不實際發送郵件。

https://docs.djangoproject.com/en/1.9/topics/testing/tools/#topics-testing-email

這是一件好事,因爲它可以讓你使用電子郵件做大量的單元測試,而無需實際發送所有這些潛在的數百封電子郵件。