Django單元測試中Fixtures用法詳解
在使用單元測試時,有時候需要測試數(shù)據庫中有數(shù)據,這時我們可以使用Django的Fixtures來生成測試數(shù)據。
Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MVT的軟件設計模式,即模型Model,視圖View和模板Template。2005年7月在BSD許可證下發(fā)布。
在對Django項目做單元測試時,經常需要生成或者導入一些初始數(shù)據。對于已經有數(shù)據存在于正式數(shù)據庫的app來說,使用Fixture 載入數(shù)據,是最簡便有效的方法。
本文通過配置myapp.json,tests.py的實例代碼給大家詳細介紹。
基礎配置
在settings.py 中配置如下內容:
FIXTURE_DIRS = ('/path/to/api/fixtures/',)
在要測試的app中,增加目錄 fixtures
在新增的 fixtures 目錄下,新建文件 myapp.json ,文件名自己定,后綴必須是 .json 。
配置myapp.json
文件中內容格式如下,實際使用時,要刪除掉實際情況,使用數(shù)據,并刪除掉注釋,如果需要多條數(shù)據,可以多寫幾個{}的內容:
[ {
"model": "myapp.user", # 數(shù)據庫名
"pk": "a864340d850f484bb89ea2981047bc5e", # 要導入的數(shù)據
"fields": { # 要導入的字段,字段名跟數(shù)據庫(models)內的字段一樣,值,根據實際需要設置
"username": "zhangsan",
"user_num": "000",
"zh_name": "張三",
"mobile": "18712345678",
"mail": "zhangsan@abc.com",
"is_deleted": false,
"create_time": "2013-01-16",
"update_time": "2013-01-16"
}
},
]
配置tests.py
class Test_user_name(TestCase): '''測試人員名稱是否正常''' fixtures = ['myapp.json'] # 在這里選擇你要導入要測試的用戶數(shù)據 def test_user_name(self): user = User.objects.get(username='zhangsan') self.assertEqual(user.name, "zhangsan")
下邊就可以運行你的單元測試了
提醒:
如果你配置了測試的Models 的Signals,這部分的代碼也會被執(zhí)行
Fixture loading
如果數(shù)據庫里沒有數(shù)據,那么對于一個基于數(shù)據庫的網站來說,test case并無多大的用處.為了給測試數(shù)據庫加入測試數(shù)據更方便,django提供了載入fixtures的方法.
fixture是一系列的數(shù)據集合,django知道如何將它導入數(shù)據庫。
創(chuàng)建fixture最直接的方法就是使用manage.py dumpdata.當然,這假設你的實際數(shù)據庫里已經有數(shù)據了.
注意:
如果你運行過manage.py syncdb命令,那么你已經使用過fixture了--只是你不知道而已。當你使用syncdb去創(chuàng)建數(shù)據庫時,會創(chuàng)建一個叫initial_data的fixture。
其他名字的Fixture可以通過manage.py loaddata命令手動安裝.
一旦建立了一個fixture,并將它放在了某個django app的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 testFluffyAnimals(self):
# A test that uses the fixtures.
call_some_test_code()
這是具體發(fā)生的過程:
1. 在setup()運行前,django會清空數(shù)據庫,相當于你執(zhí)行了syncdb。
2.然后,所有的fixture會被安裝.在例子中,django會安裝任何一個名字為mammals的JSON格式的fixture和名為birds的fixture
總結
到此這篇關于Django單元測試中Fixtures用法詳解的文章就介紹到這了,更多相關django fixtures用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python采用requests庫模擬登錄和抓取數(shù)據的簡單示例
這篇文章主要介紹了python采用requests庫模擬登錄和抓取數(shù)據的簡單示例,代碼簡單卻功能強大!需要的朋友可以參考下2014-07-07
Python數(shù)據分析之Matplotlib數(shù)據可視化
這篇文章主要介紹了Python數(shù)據分析之Matplotlib數(shù)據可視化,Matplotlib?是?Python?中常用的?2D?繪圖庫,它能輕松地將數(shù)據進行可視化,作出精美的圖表2022-08-08
Django JSonResponse對象的實現(xiàn)
本文主要介紹了Django JSonResponse對象的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03

