国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Python編程過程中用單元測試法調(diào)試代碼的介紹

2020-02-23 00:30:12
字體:
供稿:網(wǎng)友

對于程序開發(fā)新手來說,一個最常見的困惑是測試的主題。他們隱約覺得“單元測試”是很好的,而且他們也應(yīng)該做單元測試。但他們卻不懂這個詞的真正含義。如果這聽起來像是在說你,不要怕!在這篇文章中,我將介紹什么是單元測試,為什么它有用,以及如何對Python的代碼進行單元測試。

什么是測試?

在討論為什么測試很有用、怎樣進行測試之前,讓我們先花幾分鐘來定義一下“單元測試”究竟是什么。在一般的編程術(shù)語中,“測試”指的是通過編寫可以調(diào)用的代碼(獨立于你實際應(yīng)用程序的代碼)來幫助你確定程序中是否有錯誤。這并不能證明你的代碼是正確的(在非常有限的情況下這是唯一的可能)。它只是報告了測試者認(rèn)為的那種情況是否被正確處理了。

注:當(dāng)我使用“測試”一次時,我指的是“自動化測試”,即這些測試是在機器上運行的。“手動測試”則是一個人運行程序,并與它進行交互,從而發(fā)現(xiàn)漏洞,這是個獨立的概念。

測試可以檢查出什么樣的情況呢?語法錯誤是語言的意外誤用,如
 

my_list..append(foo)

后面多余的一個 “.“。邏輯錯誤是當(dāng)算法(可以看成是“解決問題的方式”)不正確時引發(fā)的。可能程序員忘記Python是“零索引“的并且試圖通過寫
 

print(my_string[len(my_string)])

(這樣會引起IndexError)來打印出一個字符串中的最后一個字符。更大、更系統(tǒng)的錯誤也可以被檢查出來。比如當(dāng)用戶輸入一個大于100的數(shù)字、或者在網(wǎng)站檢索不可用的時候掛起此網(wǎng)站的話,程序會一直崩潰。

這些所有的錯誤都可以通過對代碼的仔細(xì)測試檢查出來。Unit testing,特指在一個分隔的代碼單元中的測試。一個單元可以是整個模塊,一個單獨的類或者函數(shù),或者這兩者間的任何代碼。然而,重要的是,測試代碼要與我們沒有測試到的其他代碼相互隔離(因為其它代碼本身有錯誤的話會因此混淆測試結(jié)果)。考慮如下例子:
 

def is_prime(number):  """Return True if *number* is prime."""  for element in range(number):    if number % element == 0:      return False   return True def print_next_prime(number):  """Print the closest prime number larger than *number*."""  index = number  while True:    index += 1    if is_prime(index):      print(index)

你有兩個函數(shù),is_prime和print_next_prime。如果你想測試print_next_prime,我們就需要確定is_prime是正確的,因為print_next_prime中調(diào)用了這個函數(shù)。在這種情況下,print_next_prime函數(shù)是一個單元,is_prime函數(shù)是另一個單元。由于單元測試每次只測試一個單元,因此我們需要仔細(xì)考慮怎樣才能準(zhǔn)確的測試print_next_prime?(更多的是關(guān)于之后怎樣實現(xiàn)這些測試)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 康保县| 道孚县| 龙江县| 连州市| 辽阳县| 缙云县| 罗田县| 莆田市| 黄冈市| 漳浦县| 新安县| 凌云县| 襄樊市| 西和县| 盱眙县| 康马县| 西宁市| 泸州市| 卢氏县| 晋江市| 鄱阳县| 巴林左旗| 拜泉县| 澄城县| 凤城市| 电白县| 汉阴县| 万全县| 西华县| 嘉荫县| 安溪县| 龙门县| 兴海县| 呼和浩特市| 凤翔县| 民县| 阿拉尔市| 大同市| 海丰县| 九龙县| 萨迦县|