Python 標準庫中的 unittest 模塊,提供了代碼測試功能 。咱們能夠經過單元測試來驗證所定義的函數是否符合預期。 一個函數通常會定義一組的單元測試(也叫作測試用例), 經過這些測試用例來判斷該函數在各類邊界條件下,函數的行爲是否符合預期 。大型項目中要作到全覆蓋測試比較困難,因此在最初階段,只會針對代碼的重要行爲來編寫測試用例。 然後,在項目的發展過程當中,再逐步完善測試用例。bash
假設有這樣的一個函數,它會返回格式化後的待讀信息:函數
def to_read(book_name):
'''想讀的書'''
return '我想讀《' + book_name + '》咯'
複製代碼
如今建立一個單元測試:單元測試
import unittest
from book_function import to_read
class BookTestCase(unittest.TestCase):
'''測試 book_function.py'''
def test_read(self):
'''測試 read 函數'''
result = to_read('現代藝術150年 : 一個未完成的故事')
self.assertEqual(result, '我想讀《現代藝術150年 : 一個未完成的故事》咯')
if __name__ == '__main__':
unittest.main()
複製代碼
運行結果:測試
假設 to_read() 函數須要擴展,加入一個 book_type 參數,用於定義該書所歸屬的領域:ui
def to_read(book_name, book_type):
'''想讀的書'''
content = '我想讀《' + book_name + '》咯,'
content += '它屬於' + book_type + '領域'
return content
複製代碼
這時,若是再次運行以前編寫好的單元測試用例,就會拋出異常:spa
發生測試不經過現象時,首先要作的是冷靜,經過 Traceback ,找到問題所在,修改函數或者單元測試代碼,以符合預期行爲。3d
在這個示例中,咱們嘗試修改單元測試代碼:code
def test_read(self):
'''測試 read 函數'''
result = to_read('現代藝術150年 : 一個未完成的故事','藝術')
self.assertEqual(result, '我想讀《現代藝術150年 : 一個未完成的故事》咯,它屬於藝術領域')
複製代碼
是否是測試經過啦 O(∩_∩)O哈哈~cdn