最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flask框架單元測試原理與用法實例分析

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

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

為什么要測試?

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

測試的分類:

測試從軟件開發(fā)過程可以分為:單元測試、集成測試、系統(tǒng)測試等。在眾多的測試中,與程序開發(fā)人員最密切的就是單元測試,因為單元測試是由開發(fā)人員進行的,而其他測試都由專業(yè)的測試人員來完成。所以我們主要學習單元測試。

什么是單元測試?

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

單元測試就是開發(fā)者編寫一小段代碼,檢驗目標代碼的功能是否符合預期。通常情況下,單元測試主要面向一些功能單一的模塊進行。

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

在Web開發(fā)過程中,單元測試實際上就是一些“斷言”(assert)代碼。

斷言就是判斷一個函數(shù)或對象的一個方法所產(chǎn)生的結果是否符合你期望的那個結果。 python中assert斷言是聲明布爾值為真的判定,如果表達式為假會發(fā)生異常。單元測試中,一般使用assert來斷言結果。

斷言方法的使用:

斷言語句類似于:

if not expression:
  raise AssertionError

常用的斷言方法:

assertEqual     如果兩個值相等,則pass
assertNotEqual  如果兩個值不相等,則pass
assertTrue      判斷bool值為True,則pass
assertFalse     判斷bool值為False,則pass
assertIsNone    不存在,則pass
assertIsNotNone 存在,則pass

如何測試?

簡單的測試用例: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

單元測試的基本寫法:

首先,定義一個類,繼承自unittest.TestCase

import unittest
class TestClass(unitest.TestCase):
  pass

其次,在測試類中,定義兩個測試方法

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

最后,在測試類中,編寫測試代碼

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

發(fā)送郵件測試:

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

數(shù)據(jù)庫測試:

#coding=utf-8
import unittest
from author_book import *
#自定義測試類,setUp方法和tearDown方法會分別在測試前后執(zhí)行。以test_開頭的函數(shù)就是具體的測試代碼。
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()
  #測試代碼
  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)

希望本文所述對大家基于flask框架的Python程序設計有所幫助。

相關文章

  • Python深度學習TensorFlow神經(jīng)網(wǎng)絡基礎概括

    Python深度學習TensorFlow神經(jīng)網(wǎng)絡基礎概括

    這篇文章主要為大家介紹了Python深度學習中TensorFlow神經(jīng)網(wǎng)絡基礎概括,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 詳解Python中的array數(shù)組模塊相關使用

    詳解Python中的array數(shù)組模塊相關使用

    數(shù)組并不是Python中內(nèi)置的標配數(shù)據(jù)結構,不過擁有array模塊我們也可以在Python中使用數(shù)組結構,下面我們就來詳解詳解Python中的array數(shù)組模塊相關使用
    2016-07-07
  • python實現(xiàn)從尾到頭打印單鏈表操作示例

    python實現(xiàn)從尾到頭打印單鏈表操作示例

    這篇文章主要介紹了python實現(xiàn)從尾到頭打印單鏈表操作,結合實例形式分析了Python單鏈表的定義、判斷、添加、打印等相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • python3的UnicodeDecodeError解決方法

    python3的UnicodeDecodeError解決方法

    這篇文章主要介紹了python3的UnicodeDecodeError解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 淺析python的Lambda表達式

    淺析python的Lambda表達式

    在本文里我們給大家整理了關于python的Lambda表達式相關知識點以及相關實例,需要的朋友們學習下。
    2019-02-02
  • Python操作MongoDB詳解及實例

    Python操作MongoDB詳解及實例

    這篇文章主要介紹了Python操作MongoDB詳解及實例的相關資料,需要的朋友可以參考下
    2017-05-05
  • Django中celery執(zhí)行任務結果的保存方法

    Django中celery執(zhí)行任務結果的保存方法

    今天小編就為大家分享一篇Django中celery執(zhí)行任務結果的保存方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python應用之bin文件的制作

    Python應用之bin文件的制作

    bin是二進制文件,其用途依系統(tǒng)或應用而定。一種文件格式binary的縮寫。這篇文章主要為大家介紹了Python如何實現(xiàn)bin文件的制作,需要的可以參考一下
    2023-01-01
  • Python Word實現(xiàn)批量替換文本并生成副本

    Python Word實現(xiàn)批量替換文本并生成副本

    這篇文章主要為大家詳細介紹了Python Word如何實現(xiàn)批量替換文本并生成副本,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-10-10
  • python traceback捕獲并打印異常的方法

    python traceback捕獲并打印異常的方法

    這篇文章主要介紹了python traceback捕獲并打印異常的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08

最新評論

昭觉县| 彰化县| 甘孜| 安岳县| 日土县| 罗源县| 孙吴县| 巧家县| 隆林| 宜黄县| 乡城县| 厦门市| 高邮市| 思茅市| 临邑县| 赤水市| 文登市| 个旧市| 阜南县| 无棣县| 余庆县| 榆树市| 边坝县| 河津市| 会宁县| 桃江县| 阜城县| 青冈县| 安陆市| 黄平县| 岑溪市| 新干县| 茶陵县| 余庆县| 长丰县| 新昌县| 南澳县| 舟山市| 上思县| 乌兰县| 巴彦淖尔市|