詳解Python單元測試的兩種寫法
一、前言
python的兩個單元測試包分別是 doctest 和 unittest,這兩個包的使用起來各有長處,適用于不同的場景
- doctest:直接寫在方法體中,利用了 python 動態(tài)語言的特性,書寫方式簡單明了,前提是項目不要太大,如果項目復(fù)雜代碼量大,再加上寫在方法體中的單元測試,整體就會看起來有些臃腫,因此 doctest 適用于代碼量不大的普通項目
- unittest:一般寫在獨立文件中,與 spring 的單元測試有點像,項目結(jié)構(gòu)清晰,不過簡單項目中測試一些小功能的話實屬dark不必了
二、實現(xiàn)
先寫一個待測試的方法
def add(num1, num2): return num1 + num2
1.doctest
def add(num1, num2): """ 直接寫在待測方法中 >>> add(14, 5) 19 >>> add(14, 5) > 1 True >>> add(20, 30, 70) Traceback (most recent call last): ... TypeError: add() takes 2 positional arguments but 3 were given """ return num1 + num2 if __name__ == "__main__": import doctest doctest.testmod()
運行上面的代碼什么都不會輸出,因為預(yù)測結(jié)果全部正確,只有在預(yù)測結(jié)果錯誤的時候才會給提示
ps:
- add(14, 5) 為測試方法,19 為預(yù)測結(jié)果
- add(14, 5) > 1 為測試方法,True 為預(yù)測結(jié)果
- add(20, 30, 70) 為測試方法,Traceback (most recent call last): 為異常拋出的第一句話【錯誤原因】,TypeError: add() takes 2 positional arguments but 3 were given 為異常拋出的最后一句話【異常類型:解釋說明】,中間三個點省略了異常中的文件路徑信息
2.unittest
import unittest # 引入上面的待測試方法 from src.main.add import add class TestStatisticalFunctions(unittest.TestCase): def test_add(self): self.assertEqual(add(14, 5), 19) # 斷言 add(14, 5) 的結(jié)果為 19 self.assertTrue(add(14, 5) > 1, True) # 斷言 add(14, 5) > 1 的結(jié)果為 True with self.assertRaises(TypeError): # 斷言 add(20, 30, 70) 拋出 TypeError 異常 add(20, 30, 70) if __name__ == '__main__': unittest.main()
同樣,運行上面的代碼什么都不會輸出,因為預(yù)測結(jié)果全部正確,只有在預(yù)測結(jié)果錯誤的時候才會給提示
到此這篇關(guān)于Python單元測試的兩種寫法的文章就介紹到這了,更多相關(guān)Python單元測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對Tensorflow中tensorboard日志的生成與顯示詳解
今天小編就為大家分享一篇對Tensorflow中tensorboard日志的生成與顯示詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python函數(shù)的參數(shù)常見分類與用法實例詳解
這篇文章主要介紹了Python函數(shù)的參數(shù)常見分類與用法,結(jié)合實例形式較為詳細的分析了Python函數(shù)的形參、實參、默認參數(shù)、可變參數(shù)等概念、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2019-03-03R語言 vs Python對比:數(shù)據(jù)分析哪家強?
R語言和Python在數(shù)據(jù)分析方法都各有所長,兩者現(xiàn)在可以說是都非常熱門的,那么這篇文章就來給大家總結(jié)介紹關(guān)于R語言和Python數(shù)據(jù)分析的相關(guān)資料,并給大家推薦了一些相關(guān)的書籍學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。2017-11-11Python基于機器學(xué)習(xí)方法實現(xiàn)的電影推薦系統(tǒng)實例詳解
這篇文章主要介紹了Python基于機器學(xué)習(xí)方法實現(xiàn)的電影推薦系統(tǒng),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06tensorflow構(gòu)建BP神經(jīng)網(wǎng)絡(luò)的方法
這篇文章主要為大家詳細介紹了tensorflow構(gòu)建BP神經(jīng)網(wǎng)絡(luò)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03