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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。