1. 程式人生 > >Flask——單元測試

Flask——單元測試

測試的分類

測試從軟體開發過程可以分為:
1.單元測試
對單獨的程式碼塊(例如函式)分別進行測試,以保證它們的正確性。
單元測試就是開發者編寫一小段程式碼,檢驗目的碼的功能是否符合預期。
單元測試實際上就是一些“斷言”(assert)程式碼。判斷結果是布林值。如果為True,則pass。反之,則報異常。
2.整合測試
對大量的程式單元的協同工作情況做測試
3.系統測試
同時對整個系統的正確性進行檢查,而不是針對獨立的片段
在眾多的測試中,與程式開發人員最密切的就是單元測試,因為單元測試是由開發人員進行的,而其他測試都由專業的測試人員來完成。所以我們主要學習單元測試。

常用的斷言方法:

assertEqual :如果兩個值相等,則pass。
assertNotEqual:如果兩個值不相等,則pass。
assertTrue:如果bool值為True,則pass。
assertFalse:如果bool值為False。則pass。
assertIsNot:不存在,則pass。
assertISNotNone:存在,則pass。

單元測試的基本寫法

1.首先,定義一個類,繼承自unittest.TestCase
	import unittest
	class TestClass (unittest.TestCase):
		pass
2.其次,在測試類中,定義兩個測試方法:
	import unittest
	class TestClass(unittest.TestCase):

    #該方法會首先執行,方法名為固定寫法
    def setUp(self):
        pass

    #該方法會在測試程式碼執行完後執行,方法名為固定寫法
    def tearDown(self):
        pass		
3.最後,在測試類中,編寫測試程式碼
	import unittest
	class TestClass(unittest.TestCase):

    #該方法會首先執行,相當於做測試前的準備工作
    def setUp(self):
        pass

    #該方法會在測試程式碼執行完後執行,相當於做測試後的掃尾工作
    def tearDown(self):
        pass
    #測試程式碼(以test_開頭)
    def test_app_exists(self):
        pass

對資料庫進行測試

# 匯入測試框架

import unittest

測試作者圖書案例

from demo_author_book import *

# 定義測試類,模擬新增資料
class DatabaseTest(unittest.TestCase):

# 類似於初始化方法__init__,首先執行,一般用來配置基本的資訊,指定資料庫的連線、構建測試客戶端等
def setUp(self):
    # 開啟測試標記,可以幫助定位測試的資訊
    # app.config['TESTING'] = True
    # 指定連結的資料庫
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:
[email protected]
/demo_test' # 建立 資料庫表 db.create_all() # 類似於析構方法__del__,最後執行,一般用來清除資料,清除資料庫會話物件 def tearDown(self): # 移除資料庫會話物件,如果沒有移除資料庫會話物件,會導致在進行測試時程式一直執行,無法結束。 db.session.remove() db.drop_all() # 定義測試方法 def test_add_data(self): name = Author(name='wax') age = Book(info='18') db.session.add_all([name,age]) db.session.commit() # 查詢資料庫確認資料存在 it = Author.query.filter_by(name='wax').first() bk = Book.query.filter(Book.info=='18').first() # 使用斷言 self.assertIsNotNone(it) self.assertIsNotNone(bk)