W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
如果你的任何 Django 視圖使用 Django 的郵件功能 發(fā)送電子郵件,你可能不想每次使用該視圖運行測試時都發(fā)送電子郵件。出于這個原因,Django 的測試運行器會自動將所有 Django 發(fā)送的郵件重定向到一個虛擬的發(fā)件箱。這讓你可以測試發(fā)送郵件的每一個方面——從發(fā)送郵件的數量到每封郵件的內容——而不用實際發(fā)送郵件。
測試運行器通過透明的將正常的郵件后端替換為測試后端來實現(xiàn)。
在測試運行過程中,每一封發(fā)出的郵件都會保存在 ?django.core.mail.outbox
? 中。這是所有已經發(fā)送的 ?EmailMessage
?實例的列表。 ?outbox
?屬性是一個特殊的屬性,只有在使用 ?locmem
?郵件后端時才會創(chuàng)建。它通常不作為 ?django.core.mail
? 模塊的一部分存在,你也不能直接導入它。下面的代碼展示了如何正確訪問這個屬性。
下面是一個檢查 ?django.core.mail.outbox
? 長度和內容的測試示例:
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')
在 Django ?*TestCase
? 中的每個測試開始時,測試發(fā)件箱都會被清空。要手動清空發(fā)件箱,將空列表分配給 ?mail.outbox
?:
from django.core import mail
# Empty the test outbox
mail.outbox = []
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: