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

flask框架單元測(cè)試原理與用法實(shí)例分析

 更新時(shí)間:2019年07月23日 10:01:56   作者:笑-笑-生  
這篇文章主要介紹了flask框架單元測(cè)試原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了單元測(cè)試的概念、原理及基本用法,需要的朋友可以參考下

本文實(shí)例講述了flask框架單元測(cè)試原理與用法。分享給大家供大家參考,具體如下:

為什么要測(cè)試?

Web程序開(kāi)發(fā)過(guò)程一般包括以下幾個(gè)階段:[需求分析,設(shè)計(jì)階段,實(shí)現(xiàn)階段,測(cè)試階段]。其中測(cè)試階段通過(guò)人工或自動(dòng)來(lái)運(yùn)行測(cè)試某個(gè)系統(tǒng)的功能。目的是檢驗(yàn)其是否滿(mǎn)足需求,并得出特定的結(jié)果,以達(dá)到弄清楚預(yù)期結(jié)果和實(shí)際結(jié)果之間的差別的最終目的。

測(cè)試的分類(lèi):

測(cè)試從軟件開(kāi)發(fā)過(guò)程可以分為:?jiǎn)卧獪y(cè)試、集成測(cè)試、系統(tǒng)測(cè)試等。在眾多的測(cè)試中,與程序開(kāi)發(fā)人員最密切的就是單元測(cè)試,因?yàn)閱卧獪y(cè)試是由開(kāi)發(fā)人員進(jìn)行的,而其他測(cè)試都由專(zhuān)業(yè)的測(cè)試人員來(lái)完成。所以我們主要學(xué)習(xí)單元測(cè)試。

什么是單元測(cè)試?

程序開(kāi)發(fā)過(guò)程中,寫(xiě)代碼是為了實(shí)現(xiàn)需求。當(dāng)我們的代碼通過(guò)了編譯,只是說(shuō)明它的語(yǔ)法正確,功能能否實(shí)現(xiàn)則不能保證。 因此,當(dāng)我們的某些功能代碼完成后,為了檢驗(yàn)其是否滿(mǎn)足程序的需求??梢酝ㄟ^(guò)編寫(xiě)測(cè)試代碼,模擬程序運(yùn)行的過(guò)程,檢驗(yàn)功能代碼是否符合預(yù)期。

單元測(cè)試就是開(kāi)發(fā)者編寫(xiě)一小段代碼,檢驗(yàn)?zāi)繕?biāo)代碼的功能是否符合預(yù)期。通常情況下,單元測(cè)試主要面向一些功能單一的模塊進(jìn)行。

舉個(gè)例子:一部手機(jī)有許多零部件組成,在正式組裝一部手機(jī)前,手機(jī)內(nèi)部的各個(gè)零部件,CPU、內(nèi)存、電池、攝像頭等,都要進(jìn)行測(cè)試,這就是單元測(cè)試。

在Web開(kāi)發(fā)過(guò)程中,單元測(cè)試實(shí)際上就是一些“斷言”(assert)代碼。

斷言就是判斷一個(gè)函數(shù)或?qū)ο蟮囊粋€(gè)方法所產(chǎn)生的結(jié)果是否符合你期望的那個(gè)結(jié)果。 python中assert斷言是聲明布爾值為真的判定,如果表達(dá)式為假會(huì)發(fā)生異常。單元測(cè)試中,一般使用assert來(lái)斷言結(jié)果。

斷言方法的使用:

斷言語(yǔ)句類(lèi)似于:

if not expression:
  raise AssertionError

常用的斷言方法:

assertEqual     如果兩個(gè)值相等,則pass
assertNotEqual  如果兩個(gè)值不相等,則pass
assertTrue      判斷bool值為T(mén)rue,則pass
assertFalse     判斷bool值為False,則pass
assertIsNone    不存在,則pass
assertIsNotNone 存在,則pass

如何測(cè)試?

簡(jiǎn)單的測(cè)試用例:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,

def fibo(x):
  if x == 0:
    resp = 0
  elif x == 1:
    resp = 1
  else:
    return fibo(x-1) + fibo(x-2)
  return resp
assert fibo(5) == 5

單元測(cè)試的基本寫(xiě)法:

首先,定義一個(gè)類(lèi),繼承自u(píng)nittest.TestCase

import unittest
class TestClass(unitest.TestCase):
  pass

其次,在測(cè)試類(lèi)中,定義兩個(gè)測(cè)試方法

import unittest
class TestClass(unittest.TestCase):
  #該方法會(huì)首先執(zhí)行,方法名為固定寫(xiě)法
  def setUp(self):
    pass
  #該方法會(huì)在測(cè)試代碼執(zhí)行完后執(zhí)行,方法名為固定寫(xiě)法
  def tearDown(self):
    pass

最后,在測(cè)試類(lèi)中,編寫(xiě)測(cè)試代碼

import unittest
class TestClass(unittest.TestCase):
  #該方法會(huì)首先執(zhí)行,相當(dāng)于做測(cè)試前的準(zhǔn)備工作
  def setUp(self):
    pass
  #該方法會(huì)在測(cè)試代碼執(zhí)行完后執(zhí)行,相當(dāng)于做測(cè)試后的掃尾工作
  def tearDown(self):
    pass
  #測(cè)試代碼
  def test_app_exists(self):
    pass

發(fā)送郵件測(cè)試:

#coding=utf-8
import unittest
from Flask_day04 import app
class TestCase(unittest.TestCase):
  # 創(chuàng)建測(cè)試環(huán)境,在測(cè)試代碼執(zhí)行前執(zhí)行
  def setUp(self):
    self.app = app
    # 激活測(cè)試標(biāo)志
    app.config['TESTING'] = True
    self.client = self.app.test_client()
  # 在測(cè)試代碼執(zhí)行完成后執(zhí)行
  def tearDown(self):
    pass
  # 測(cè)試代碼
  def test_email(self):
    resp = self.client.get('/')
    print resp.data
    self.assertEqual(resp.data,'Sent Succeed')

數(shù)據(jù)庫(kù)測(cè)試:

#coding=utf-8
import unittest
from author_book import *
#自定義測(cè)試類(lèi),setUp方法和tearDown方法會(huì)分別在測(cè)試前后執(zhí)行。以test_開(kāi)頭的函數(shù)就是具體的測(cè)試代碼。
class DatabaseTest(unittest.TestCase):
  def setUp(self):
    app.config['TESTING'] = True
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost/test0'
    self.app = app
    db.create_all()
  def tearDown(self):
    db.session.remove()
    db.drop_all()
  #測(cè)試代碼
  def test_append_data(self):
    au = Author(name='itcast')
    bk = Book(info='python')
    db.session.add_all([au,bk])
    db.session.commit()
    author = Author.query.filter_by(name='itcast').first()
    book = Book.query.filter_by(info='python').first()
    #斷言數(shù)據(jù)存在
    self.assertIsNotNone(author)
    self.assertIsNotNone(book)

希望本文所述對(duì)大家基于flask框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python Tornado之跨域請(qǐng)求與Options請(qǐng)求方式

    Python Tornado之跨域請(qǐng)求與Options請(qǐng)求方式

    這篇文章主要介紹了Python Tornado之跨域請(qǐng)求與Options請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Pygame改編飛機(jī)大戰(zhàn)制作兔子接月餅游戲

    Pygame改編飛機(jī)大戰(zhàn)制作兔子接月餅游戲

    一年中秋又快到了,今年加入了Python的學(xué)習(xí)行列,得益于Python的開(kāi)發(fā)效率和易讀性,網(wǎng)上寫(xiě)文章的次數(shù)多了起來(lái),既然是中秋節(jié)那肯定要搞個(gè)應(yīng)景的游戲才行
    2022-09-09
  • 詳解Python NumPy中矩陣和通用函數(shù)的使用

    詳解Python NumPy中矩陣和通用函數(shù)的使用

    在NumPy中,矩陣是ndarray的子類(lèi),與數(shù)學(xué)概念中的矩陣一樣,NumPy中的矩陣也是二維的,可以使用 mat 、 matrix 以及 bmat 函數(shù)來(lái)創(chuàng)建矩陣。本文將詳細(xì)講解NumPy中矩陣和通用函數(shù)的使用,感興趣的可以了解一下
    2022-06-06
  • python3.4用循環(huán)往mysql5.7中寫(xiě)數(shù)據(jù)并輸出的實(shí)現(xiàn)方法

    python3.4用循環(huán)往mysql5.7中寫(xiě)數(shù)據(jù)并輸出的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇python3.4用循環(huán)往mysql5.7中寫(xiě)數(shù)據(jù)并輸出的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • numpy多維數(shù)組索引問(wèn)題

    numpy多維數(shù)組索引問(wèn)題

    這篇文章主要介紹了numpy多維數(shù)組索引的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python os模塊和fnmatch模塊的使用介紹

    python os模塊和fnmatch模塊的使用介紹

    這篇文章主要介紹了python os模塊和fnmatch模塊的使用介紹,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • python中將字典改造為對(duì)象的方法

    python中將字典改造為對(duì)象的方法

    這篇文章主要介紹了python中將字典改造為對(duì)象的方法,在實(shí)際項(xiàng)目中,當(dāng)使用json模塊加載一個(gè)深度很深的字典類(lèi)型的json文件時(shí),使用字典的訪(fǎng)問(wèn)方式,將會(huì)出現(xiàn)很多中括號(hào),即不直觀也不美觀,可以將這個(gè)字典轉(zhuǎn)化為對(duì)象,使得可以用.的方式訪(fǎng)問(wèn),需要的朋友可以參考下
    2023-11-11
  • Django重裝mysql后啟動(dòng)報(bào)錯(cuò):No module named ‘MySQLdb’的解決方法

    Django重裝mysql后啟動(dòng)報(bào)錯(cuò):No module named ‘MySQLdb’的解決方法

    這篇文章主要給大家介紹了關(guān)于Django重裝mysql后啟動(dòng)報(bào)錯(cuò):No module named ‘MySQLdb’的解決方法,分享出來(lái),對(duì)同樣遇到這個(gè)問(wèn)題的朋友們一個(gè)參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • python爬蟲(chóng)urllib中的異常模塊處理

    python爬蟲(chóng)urllib中的異常模塊處理

    這篇文章主要為大家介紹了python爬蟲(chóng)在爬取網(wǎng)頁(yè)時(shí)urllib中的異常模塊處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python通過(guò)正則查找微博@(at)用戶(hù)的方法

    python通過(guò)正則查找微博@(at)用戶(hù)的方法

    這篇文章主要介紹了python通過(guò)正則查找微博@(at)用戶(hù)的方法,涉及Python正則匹配的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評(píng)論