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


Python Django TransactionTestCase.fixtures用法及代码示例


本文介绍 django.test.TransactionTestCase.fixtures 的用法。

声明

TransactionTestCase.fixtures

如果数据库中没有任何数据,则 database-backed 网站的测试用例没有多大用处。测试更具可读性,并且使用 ORM 创建对象更易于维护,例如在 TestCase.setUpTestData() 中,但是,您也可以使用夹具。

固定装置是 Django 知道如何导入数据库的数据集合。例如,如果您的站点有用户帐户,您可能会设置一个假用户帐户,以便在测试期间填充您的数据库。

创建夹具最直接的方法是使用 manage.py dumpdata 命令。这假设您的数据库中已经有一些数据。有关详细信息,请参阅 dumpdata documentation

一旦您创建了一个夹具并将其放置在 INSTALLED_APPS 之一的 fixtures 目录中,您可以通过在 django.test.TestCase 子类上指定 fixtures 类属性来在单元测试中使用它:

from django.test import TestCase
from myapp.models import Animal

class AnimalTestCase(TestCase):
    fixtures = ['mammals.json', 'birds']

    def setUp(self):
        # Test definitions as before.
        call_setup_methods()

    def test_fluffy_animals(self):
        # A test that uses the fixtures.
        call_some_test_code()

以下是具体会发生什么:

  • 在每次测试开始时,在 setUp() 运行之前,Django 将刷新数据库,将数据库返回到调用 migrate 之后的状态。
  • 然后,安装所有命名的固定装置。在此示例中,Django 将安装任何名为 mammals 的 JSON 夹具,然后安装任何名为 birds 的夹具。有关定义和安装夹具的更多详细信息,请参阅 loaddata 文档。

出于性能原因, TestCase 为整个测试类加载一次夹具,在 setUpTestData() 之前,而不是在每次测试之前,它使用事务在每次测试之前清理数据库。在任何情况下,您都可以确定测试的结果不会受到另一个测试或测试执行顺序的影响。

默认情况下,夹具仅加载到default 数据库中。如果您使用多个数据库并设置 TransactionTestCase.databases ,则夹具将加载到所有指定的数据库中。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.test.TransactionTestCase.fixtures。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。