2021/06/10
Django テスト メールDjango メール送信のテストを実装する方法
バージョン
- Django 3.2
Djangoでメール送信のテスト
Djangoのテスト内でメール送信処理をした時は、実際にはメールは送信されずにダミーのoutbox(django.core.mail.outbox
)に保存されます。outboxは送信済メールのリストなのでoutbox[インデックス番号]
の形式で送信されたメールを取得することができます。
mail_test.py
from django.core import mail
from django.core.mail import EmailMessage
from django.test import TestCase
class EmailTest(TestCase):
def test_send_email(self):
# メール送信処理
EmailMessage(
subject="件名です",
body="本文です",
from_email="[email protected]",
to=["[email protected]"],
cc=["[email protected]", "[email protected]"],
bcc=["[email protected]", "[email protected]"],
).send()
# 1通のメールが送信されたことの確認。(送信されないことを確認したい場合は0を指定)
self.assertEqual(len(mail.outbox), 1)
# 各プロパティの確認
self.assertEqual(mail.outbox[0].subject, "件名です")
self.assertEqual(mail.outbox[0].body, "本文です")
self.assertEqual(mail.outbox[0].from_email, "[email protected]")
self.assertEqual(mail.outbox[0].to, ["[email protected]"])
self.assertEqual(mail.outbox[0].cc, ["[email protected]", "[email protected]"])
self.assertEqual(mail.outbox[0].bcc, ["[email protected]", "[email protected]"])