欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年02月25日 13:56:42   作者:Young 先生  
這篇文章主要介紹了Django單元測(cè)試中Fixtures用法,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

 Django是一個(gè)開(kāi)放源代碼的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來(lái)說(shuō),使用Fixture 載入數(shù)據(jù),是最簡(jiǎn)便有效的方法。

本文通過(guò)配置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": "zhangsan@abc.com",
  "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ù)里沒(méi)有數(shù)據(jù),那么對(duì)于一個(gè)基于數(shù)據(jù)庫(kù)的網(wǎng)站來(lái)說(shuō),test case并無(wú)多大的用處.為了給測(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)行過(guò)manage.py syncdb命令,那么你已經(jīng)使用過(guò)fixture了--只是你不知道而已。當(dāng)你使用syncdb去創(chuàng)建數(shù)據(jù)庫(kù)時(shí),會(huì)創(chuàng)建一個(gè)叫initial_data的fixture。
   其他名字的Fixture可以通過(guò)manage.py loaddata命令手動(dòng)安裝.

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

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ā)生的過(guò)程:

  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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python生成各種常見(jiàn)條形碼及二維碼

    使用python生成各種常見(jiàn)條形碼及二維碼

    條形碼和二維碼是現(xiàn)代信息交換和數(shù)據(jù)存儲(chǔ)的重要工具,它們將信息以圖形的形式編碼,便于機(jī)器識(shí)別和數(shù)據(jù)處理,本文將介紹如何使用Python快速生成各種常見(jiàn)的條形碼如Code 128、EAN-13,以及生成二維碼,需要的朋友可以參考下
    2024-07-07
  • 對(duì)python中的os.getpid()和os.fork()函數(shù)詳解

    對(duì)python中的os.getpid()和os.fork()函數(shù)詳解

    今天小編就為大家分享一篇對(duì)python中的os.getpid()和os.fork()函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • tensorflow:指定gpu 限制使用量百分比,設(shè)置最小使用量的實(shí)現(xiàn)

    tensorflow:指定gpu 限制使用量百分比,設(shè)置最小使用量的實(shí)現(xiàn)

    今天小編就為大家分享一篇tensorflow:指定gpu 限制使用量百分比,設(shè)置最小使用量的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別

    淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • python數(shù)據(jù)結(jié)構(gòu)之搜索講解

    python數(shù)據(jù)結(jié)構(gòu)之搜索講解

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之搜索講解,搜索是指從元素集合中找到某個(gè)特定元素的算法過(guò)程。搜索過(guò)程通常返回?True?或?False,?分別表示元素是否存在,下面一起來(lái)了解文章的詳細(xì)內(nèi)容吧,希望對(duì)你有所幫助
    2021-12-12
  • TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式

    TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式

    這篇文章主要介紹了TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 舉例講解Python中is和id的用法

    舉例講解Python中is和id的用法

    這篇文章主要介紹了舉例講解Python中is和id的用法,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),作者舉例進(jìn)行了簡(jiǎn)單說(shuō)明,需要的朋友可以參考下
    2015-04-04
  • Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理基本操作精確分詞

    Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理基本操作精確分詞

    本文是Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理系列文章,帶大家開(kāi)啟一段學(xué)習(xí)自然語(yǔ)言處理 (NLP) 的旅程. 本文主要學(xué)習(xí)NLP自然語(yǔ)言處理基本操作之如何精確分詞
    2021-09-09
  • Python Word文件自動(dòng)化實(shí)戰(zhàn)之簡(jiǎn)歷篩選

    Python Word文件自動(dòng)化實(shí)戰(zhàn)之簡(jiǎn)歷篩選

    本文將利用Python自動(dòng)化做一個(gè)具有實(shí)操性的小練習(xí),即通過(guò)讀取簡(jiǎn)歷來(lái)篩選出符合招聘條件的簡(jiǎn)歷。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • python opencv人臉檢測(cè)提取及保存方法

    python opencv人臉檢測(cè)提取及保存方法

    今天小編就為大家分享一篇python opencv人臉檢測(cè)提取及保存方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論