当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。