當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Django TestCase.captureOnCommitCallbacks用法及代碼示例

本文介紹 django.test.TestCase.captureOnCommitCallbacks 的用法。

聲明

classmethod TestCase.captureOnCommitCallbacks(using=DEFAULT_DB_ALIAS, execute=False)
Django 3.2 中的新函數。

返回一個上下文管理器,它為給定的數據庫連接捕獲 transaction.on_commit() 回調。它返回一個列表,其中包含在上下文退出時捕獲的回調函數。從此列表中,您可以對回調進行斷言或調用它們以調用其副作用,模擬提交。

using 是要為其捕獲回調的數據庫連接的別名。

如果 executeTrue ,如果沒有發生異常,所有回調將在上下文管理器退出時被調用。這模擬了包裝代碼塊之後的提交。

例如:

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


class ContactTests(TestCase):
    def test_post(self):
        with self.captureOnCommitCallbacks(execute=True) as callbacks:
            response = self.client.post(
                '/contact/',
                {'message': 'I like your site'},
            )

        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(callbacks), 1)
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Contact Form')
        self.assertEqual(mail.outbox[0].body, 'I like your site')
在 Django 4.0 中更改:

在舊版本中,未捕獲在執行 transaction.on_commit() 回調時添加的新回調。

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.test.TestCase.captureOnCommitCallbacks。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。