色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Django單元測(cè)試中Fixtures用法詳解

瀏覽:146日期:2024-10-23 17:54:52

在使用單元測(cè)試時(shí),有時(shí)候需要測(cè)試數(shù)據(jù)庫(kù)中有數(shù)據(jù),這時(shí)我們可以使用Django的Fixtures來生成測(cè)試數(shù)據(jù)。

Django是一個(gè)開放源代碼的Web應(yīng)用框架,由Python寫成。采用了MVT的軟件設(shè)計(jì)模式,即模型Model,視圖View和模板Template。2005年7月在BSD許可證下發(fā)布。

在對(duì)Django項(xiàng)目做單元測(cè)試時(shí),經(jīng)常需要生成或者導(dǎo)入一些初始數(shù)據(jù)。對(duì)于已經(jīng)有數(shù)據(jù)存在于正式數(shù)據(jù)庫(kù)的app來說,使用Fixture 載入數(shù)據(jù),是最簡(jiǎn)便有效的方法。

本文通過配置myapp.json,tests.py的實(shí)例代碼給大家詳細(xì)介紹。

基礎(chǔ)配置

在settings.py 中配置如下內(nèi)容:

FIXTURE_DIRS = (’/path/to/api/fixtures/’,)

在要測(cè)試的app中,增加目錄 fixtures在新增的 fixtures 目錄下,新建文件 myapp.json ,文件名自己定,后綴必須是 .json 。

配置myapp.json

文件中內(nèi)容格式如下,實(shí)際使用時(shí),要?jiǎng)h除掉實(shí)際情況,使用數(shù)據(jù),并刪除掉注釋,如果需要多條數(shù)據(jù),可以多寫幾個(gè){}的內(nèi)容:

[ { 'model': 'myapp.user', # 數(shù)據(jù)庫(kù)名 'pk': 'a864340d850f484bb89ea2981047bc5e', # 要導(dǎo)入的數(shù)據(jù) 'fields': { # 要導(dǎo)入的字段,字段名跟數(shù)據(jù)庫(kù)(models)內(nèi)的字段一樣,值,根據(jù)實(shí)際需要設(shè)置 'username': 'zhangsan', 'user_num': '000', 'zh_name': '張三', 'mobile': '18712345678', 'mail': '[email protected]', 'is_deleted': false, 'create_time': '2013-01-16', 'update_time': '2013-01-16' } },]

配置tests.py

class Test_user_name(TestCase): ’’’測(cè)試人員名稱是否正常’’’ fixtures = [’myapp.json’] # 在這里選擇你要導(dǎo)入要測(cè)試的用戶數(shù)據(jù) def test_user_name(self): user = User.objects.get(username=’zhangsan’) self.assertEqual(user.name, 'zhangsan')

下邊就可以運(yùn)行你的單元測(cè)試了

提醒:

如果你配置了測(cè)試的Models 的Signals,這部分的代碼也會(huì)被執(zhí)行

Fixture loading

如果數(shù)據(jù)庫(kù)里沒有數(shù)據(jù),那么對(duì)于一個(gè)基于數(shù)據(jù)庫(kù)的網(wǎng)站來說,test case并無多大的用處.為了給測(cè)試數(shù)據(jù)庫(kù)加入測(cè)試數(shù)據(jù)更方便,django提供了載入fixtures的方法.

fixture是一系列的數(shù)據(jù)集合,django知道如何將它導(dǎo)入數(shù)據(jù)庫(kù)。

創(chuàng)建fixture最直接的方法就是使用manage.py dumpdata.當(dāng)然,這假設(shè)你的實(shí)際數(shù)據(jù)庫(kù)里已經(jīng)有數(shù)據(jù)了.

注意:

如果你運(yùn)行過manage.py syncdb命令,那么你已經(jīng)使用過fixture了--只是你不知道而已。當(dāng)你使用syncdb去創(chuàng)建數(shù)據(jù)庫(kù)時(shí),會(huì)創(chuàng)建一個(gè)叫initial_data的fixture。 其他名字的Fixture可以通過manage.py loaddata命令手動(dòng)安裝.

一旦建立了一個(gè)fixture,并將它放在了某個(gè)django app的fixtures目錄中,你就可以在你的測(cè)試類里使用它了:

from django.test import TestCasefrom myapp.models import Animalclass 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()運(yùn)行前,django會(huì)清空數(shù)據(jù)庫(kù),相當(dāng)于你執(zhí)行了syncdb。

2.然后,所有的fixture會(huì)被安裝.在例子中,django會(huì)安裝任何一個(gè)名字為mammals的JSON格式的fixture和名為birds的fixture

總結(jié)

到此這篇關(guān)于Django單元測(cè)試中Fixtures用法詳解的文章就介紹到這了,更多相關(guān)django fixtures用法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 国产黄色片在线免费观看 | 久久最新免费视频 | 欧美另类在线观看 | 成人国产三级在线播放 | 黄网在线视频 | 国产精品99久久99久久久看片 | 成年男人的天堂 | 欧美人成片免费看视频不卡 | 精品国产欧美另类一区 | 国产无卡一级毛片aaa | 看成年女人免费午夜视频 | 特级毛片永久久免费观看 | 亚洲精品永久一区 | 久久福利青草精品免费 | 看全色黄大色黄大片毛片 | 亚洲一级理论片 | 99久久国产免费 - 99久久国产免费 | 欧美69色| 99在线观看视频免费 | 亚洲精品国产第一区二区三区 | 夜间福利网站 | 欧美午夜精品久久久久免费视 | 97视频免费在线 | 91日本在线视频 | 国产欧美一区二区三区久久 | 欧美成人手机视频 | 手机在线精品视频 | 91精品国产高清91久久久久久 | 日韩美女视频在线观看 | 美女张开双腿让男人桶 | 亚洲精品天堂在线观看 | 日本欧美中文 | 午夜性爽快免费视频播放 | 美女张开腿让男人桶的动态图 | 亚洲好逼| 国产在线播放成人免费 | 国产嫩草影院在线观看 | 日本免费观看的视频在线 | 国产孕妇孕交大片孕 | 国产一级在线观看视频 | 九九干 |