TestUserEmail(TransactionTestCase): # send_email でメールが送信されたか確認する def test_failed_to_send_emai(self): create_user() self.assertEqual(True, User.object.first().email_sent) from django.db import transaction def create_user(): with transaction.atomic(): user = User.objects.create(name="test", email="
[email protected]") user.save() transaction.on_commit(send_email, user) 3.Django testing に Deep-dive 18 Transaction を含むテストを TransactionTestCase で実装する transaction.on_commit - トランザクションがコミットされるとコールバック関数 が実行される。django.test.TestCase の場合は親のト ランザクションが張られ続けるのでコミットが発生せ ず、テストできない。 🔍 参考資料 Transaction on_commit 関数について https://docs.djangoproject.com/en/4.2/topics/db/transactions/#performing-act ions-after-commit create_user.py