欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python單元測(cè)試的兩種寫(xiě)法

 更新時(shí)間:2022年07月07日 10:51:33   作者:什么都干的派森  
python的兩個(gè)單元測(cè)試包分別是 doctest 和 unittest,這兩個(gè)包的使用起來(lái)各有長(zhǎng)處,適用于不同的場(chǎng)景,這篇文章主要介紹了Python單元測(cè)試的兩種寫(xiě)法,需要的朋友可以參考下

一、前言

python的兩個(gè)單元測(cè)試包分別是 doctest 和 unittest,這兩個(gè)包的使用起來(lái)各有長(zhǎng)處,適用于不同的場(chǎng)景

  • doctest:直接寫(xiě)在方法體中,利用了 python 動(dòng)態(tài)語(yǔ)言的特性,書(shū)寫(xiě)方式簡(jiǎn)單明了,前提是項(xiàng)目不要太大,如果項(xiàng)目復(fù)雜代碼量大,再加上寫(xiě)在方法體中的單元測(cè)試,整體就會(huì)看起來(lái)有些臃腫,因此 doctest 適用于代碼量不大的普通項(xiàng)目
  • unittest:一般寫(xiě)在獨(dú)立文件中,與 spring 的單元測(cè)試有點(diǎn)像,項(xiàng)目結(jié)構(gòu)清晰,不過(guò)簡(jiǎn)單項(xiàng)目中測(cè)試一些小功能的話實(shí)屬dark不必了

二、實(shí)現(xiàn)

先寫(xiě)一個(gè)待測(cè)試的方法

def add(num1, num2):
    return num1 + num2

1.doctest

def add(num1, num2):
    """
    直接寫(xiě)在待測(cè)方法中
    
    >>> 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ùn)行上面的代碼什么都不會(huì)輸出,因?yàn)轭A(yù)測(cè)結(jié)果全部正確,只有在預(yù)測(cè)結(jié)果錯(cuò)誤的時(shí)候才會(huì)給提示
ps:

  • add(14, 5) 為測(cè)試方法,19 為預(yù)測(cè)結(jié)果
  • add(14, 5) > 1 為測(cè)試方法,True 為預(yù)測(cè)結(jié)果
  • add(20, 30, 70) 為測(cè)試方法,Traceback (most recent call last): 為異常拋出的第一句話【錯(cuò)誤原因】,TypeError: add() takes 2 positional arguments but 3 were given 為異常拋出的最后一句話【異常類型:解釋說(shuō)明】,中間三個(gè)點(diǎn)省略了異常中的文件路徑信息

2.unittest

import unittest
# 引入上面的待測(cè)試方法
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ùn)行上面的代碼什么都不會(huì)輸出,因?yàn)轭A(yù)測(cè)結(jié)果全部正確,只有在預(yù)測(cè)結(jié)果錯(cuò)誤的時(shí)候才會(huì)給提示

到此這篇關(guān)于Python單元測(cè)試的兩種寫(xiě)法的文章就介紹到這了,更多相關(guān)Python單元測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 對(duì)Tensorflow中tensorboard日志的生成與顯示詳解

    對(duì)Tensorflow中tensorboard日志的生成與顯示詳解

    今天小編就為大家分享一篇對(duì)Tensorflow中tensorboard日志的生成與顯示詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python函數(shù)的參數(shù)常見(jiàn)分類與用法實(shí)例詳解

    Python函數(shù)的參數(shù)常見(jiàn)分類與用法實(shí)例詳解

    這篇文章主要介紹了Python函數(shù)的參數(shù)常見(jiàn)分類與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python函數(shù)的形參、實(shí)參、默認(rèn)參數(shù)、可變參數(shù)等概念、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?

    R語(yǔ)言 vs Python對(duì)比:數(shù)據(jù)分析哪家強(qiáng)?

    R語(yǔ)言和Python在數(shù)據(jù)分析方法都各有所長(zhǎng),兩者現(xiàn)在可以說(shuō)是都非常熱門(mén)的,那么這篇文章就來(lái)給大家總結(jié)介紹關(guān)于R語(yǔ)言和Python數(shù)據(jù)分析的相關(guān)資料,并給大家推薦了一些相關(guān)的書(shū)籍學(xué)習(xí),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起看看吧。
    2017-11-11
  • python基礎(chǔ)之//、/與%的區(qū)別詳解

    python基礎(chǔ)之//、/與%的區(qū)別詳解

    在學(xué)習(xí)Python或者使用Python進(jìn)行工作的時(shí)候,大家應(yīng)該都看到過(guò)“/”和“//”,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)之//、/與%區(qū)別的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Python itertools模塊詳解

    Python itertools模塊詳解

    這篇文章主要介紹了Python itertools模塊詳解,本文基本是基于文檔的翻譯和補(bǔ)充,相當(dāng)于翻譯了,需要的朋友可以參考下
    2015-05-05
  • python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法

    python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法

    今天小編就為大家分享一篇python3 實(shí)現(xiàn)驗(yàn)證碼圖片切割的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python?reflect單例模式反射各個(gè)函數(shù)

    Python?reflect單例模式反射各個(gè)函數(shù)

    這篇文章主要介紹了Python?reflect單例模式反射各個(gè)函數(shù),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-06-06
  • Python基于機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)的電影推薦系統(tǒng)實(shí)例詳解

    Python基于機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)的電影推薦系統(tǒng)實(shí)例詳解

    這篇文章主要介紹了Python基于機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)的電影推薦系統(tǒng),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • tensorflow構(gòu)建BP神經(jīng)網(wǎng)絡(luò)的方法

    tensorflow構(gòu)建BP神經(jīng)網(wǎng)絡(luò)的方法

    這篇文章主要為大家詳細(xì)介紹了tensorflow構(gòu)建BP神經(jīng)網(wǎng)絡(luò)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python tornado微信開(kāi)發(fā)入門(mén)代碼

    python tornado微信開(kāi)發(fā)入門(mén)代碼

    這篇文章主要為大家詳細(xì)介紹了python tornado微信開(kāi)發(fā)入門(mén)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論