Flask——單元測試
阿新 • • 發佈:2018-11-30
測試的分類
測試從軟體開發過程可以分為:
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)