Python單元和文檔測(cè)試實(shí)例詳解
本文實(shí)例講述了Python單元和文檔測(cè)試。分享給大家供大家參考,具體如下:
單元和文檔測(cè)試
1、單元測(cè)試
單元測(cè)試就是用來(lái)對(duì)一個(gè)模塊、一個(gè)函數(shù)或者一個(gè)類(lèi)來(lái)進(jìn)行正確性的檢測(cè)工作。
1.若是單元測(cè)試通過(guò),則證明測(cè)試的函數(shù)能夠正確的工作,
2.反之則證明要么函數(shù)有bug要么輸入不合法,總之我們需要修復(fù)我們的函數(shù)功能。
2、對(duì)函數(shù)進(jìn)行單元測(cè)試
創(chuàng)建python文件MathFunc.py,內(nèi)容如下:
def mySum(x,y): return x + y def mySub(x,y) return x -y print(mySum(1,2))
創(chuàng)建python文件的text01.py,內(nèi)容如下:
import unittest from MathFunc import mySum, mySub #測(cè)試類(lèi) 繼承自u(píng)nittest.TestCase class Test(unittest.TestCase): #下面兩個(gè)方法存在的意義:假設(shè)需要連接數(shù)據(jù)庫(kù),當(dāng)測(cè)試完畢之后,需要斷開(kāi)和數(shù)據(jù)庫(kù)的連接 def setUp(self): print("開(kāi)始測(cè)試時(shí)自動(dòng)調(diào)用") def tearDown(self): print("結(jié)束時(shí)自動(dòng)調(diào)用") #測(cè)試相應(yīng)的函數(shù) #一般情況下,測(cè)試函數(shù)命名格式:text_需要被測(cè)試的函數(shù)名 def test_mySum(self): #斷言:對(duì)函數(shù)命名格式:text_需要被測(cè)試的函數(shù)名 self.assertEqual(mySum(1,2),3,"加法有誤") def test_mySub(self): self.asserEqual(mySub(2,1),1,"減法有誤") #當(dāng)主程序運(yùn)行的時(shí)候,開(kāi)始進(jìn)行單元測(cè)試 if __name__ == "__main__": unittest.main()
運(yùn)行text01.py文件,發(fā)現(xiàn)正常,然后修改MathFunc.py文件中的內(nèi)容,可按照下面的方式修改。
def mySum(x,y): return x + y + 1 def mySub(x, y): return x - y print(mySub(1,2))
再次運(yùn)行text01.py文件,會(huì)出現(xiàn)錯(cuò)誤信息。
3、對(duì)類(lèi)進(jìn)行單元測(cè)試
先創(chuàng)建一個(gè)類(lèi)文件person.py,內(nèi)容如下:
class Person(object): #構(gòu)造方法 def __init__(self, name, age): #給成員變量賦值 self.name = name self.age = age def getAge(self): return self.age
創(chuàng)建text02.py文件,進(jìn)行類(lèi)的單元測(cè)試,內(nèi)容如下:
import unittest from person import person class Test(unittest.TestCase): def test_init(self): p = Person('hanmeimei',20) self.asserEqual(p.name,"hanmeimei","屬性值有誤") def test_getAge(self): p = Person('hanmeimei',22) self.assertEqual(p.getAge(),p.age,"getAge函數(shù)有誤") if __name__ = "__main__": unittest.mian()
演示,運(yùn)行text02.py文件,程序正常運(yùn)行,修改person.py文件中的內(nèi)容,具體內(nèi)容如下:
class Person(object): #構(gòu)造方法 def __init__(self, name, age): #給成員變量賦值 self.name = name self.age = age def getAge(self): return self.age+1
再次運(yùn)行會(huì)報(bào)錯(cuò)
對(duì)類(lèi)的單元測(cè)試:本質(zhì)上還是對(duì)方法的單元測(cè)試。
4、文檔測(cè)試
文檔測(cè)試的作用:可以提取注釋找那個(gè)的代碼執(zhí)行
doctest模塊可以提取注釋中的代碼執(zhí)行
doctest嚴(yán)格按照python的交互模式的輸入進(jìn)行提取
import doctest def mySum(x,y): #對(duì)函數(shù)進(jìn)行功能和使用說(shuō)明 ''' 求兩個(gè)數(shù)的和 get The sum from x and y :param x:firstNum :param y:secondNum :return sum #注意有空格 example: >>> print(mySum(1,2)) 3 ''' return x + y print(mySum(1,2)) #進(jìn)行文檔測(cè)試,在當(dāng)前文件中進(jìn)行即可 doctest.testmod()
注意:演示的時(shí)候,主要測(cè)試
example:
>>> print(mySum(1,2)) 3
關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- PyCharm-錯(cuò)誤-找不到指定文件python.exe的解決方法
- 解決python寫(xiě)入帶有中文的字符到文件錯(cuò)誤的問(wèn)題
- Python中出現(xiàn)IndentationError:unindent does not match any outer indentation level錯(cuò)誤的解決方法
- 淺談Python在pycharm中的調(diào)試(debug)
- VSCode下配置python調(diào)試運(yùn)行環(huán)境的方法
- 如何使用VSCode愉快的寫(xiě)Python于調(diào)試配置步驟
- 介紹Python中的文檔測(cè)試模塊
- python錯(cuò)誤調(diào)試及單元文檔測(cè)試過(guò)程解析
相關(guān)文章
django drf框架中的user驗(yàn)證以及JWT拓展的介紹
這篇文章主要介紹了django drf框架中的user驗(yàn)證以及JWT拓展的介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Appium自動(dòng)化測(cè)試實(shí)現(xiàn)九宮格解鎖
本文主要介紹了Appium自動(dòng)化測(cè)試實(shí)現(xiàn)九宮格解鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換匯總
這篇文章主要給大家分享的是Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換匯總,int,float相互轉(zhuǎn)換、int,string相互轉(zhuǎn)換、float,string相互轉(zhuǎn)換、string,list相互轉(zhuǎn)換等常見(jiàn)內(nèi)容,需要的小伙伴可以參考一下2022-03-03淺談python已知元素,獲取元素索引(numpy,pandas)
今天小編就為大家分享一篇淺談python已知元素,獲取元素索引(numpy,pandas),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11python利用MethodType綁定方法到類(lèi)示例代碼
這篇文章主要給大家介紹了關(guān)于python利用MethodType綁定方法到類(lèi)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08用Python實(shí)現(xiàn)數(shù)據(jù)篩選與匹配實(shí)例
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)數(shù)據(jù)篩選與匹配實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下2022-02-02Python 超時(shí)請(qǐng)求或計(jì)算的處理方案
這篇文章主要介紹了Python 超時(shí)請(qǐng)求或計(jì)算的處理方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06在django中查詢(xún)獲取數(shù)據(jù),get, filter,all(),values()操作
這篇文章主要介紹了在django中查詢(xún)獲取數(shù)據(jù),get, filter,all(),values()操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08pytorch中torch.max和Tensor.view函數(shù)用法詳解
今天小編就為大家分享一篇pytorch中torch.max和Tensor.view函數(shù)用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01