成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python單元測試正確使用規(guī)則

開發(fā) 后端
Python單元測試在實際編程應(yīng)用中究竟能給我們帶來哪些好處呢?我們今天將會通過本文介紹的一些內(nèi)容來詳細(xì)分析這一應(yīng)用技術(shù)。

Python中有一種測試方法叫做單元測試。它的使用可以給我們開發(fā)人員在實際程序開發(fā)中帶來非常大的好處。在這里我們就可以通過本文介紹的關(guān)于Python單元測試的相關(guān)內(nèi)容來對這一方面的知識有一個相應(yīng)的了解。#t#

測試是一個貫穿于整個開發(fā)過程的連續(xù)過程,從某個意義上說,軟件開發(fā)的過程實際上就是測試過程。正如Martin Fowler所說的"在你不知道如何測試代碼之前,就不該編寫程序。而一旦你完成了程序,測試代碼也應(yīng)該完成。除非測試成功,你不能認(rèn)為你編寫出了可以工作的程序。"

測試最基本的原理就是比較預(yù)期結(jié)果是否與實際執(zhí)行結(jié)果相同,如果相同則測試成功,否則測試失敗。為了更好地理解PyUnit這一自動測試框架的作用,先來看一個簡單的例子,假設(shè)我們要對例1中的Widget類進(jìn)行測試:

例1. widget.py

  1. # 將要被測試的類  
  2. class Widget:  
  3. def __init__(self, size = (40, 40)):  
  4. self._size = size  
  5. def getSize(self):  
  6. return self._size  
  7. def resize(self, width, height):  
  8. if width 0 or height < 0: 
  9. raise ValueError, "illegal size"  
  10. self._size = (width, height)  
  11. def dispose(self):  
  12. pass 

采用手工方式進(jìn)行Python單元測試的Python程序員很可能會寫出類似例2的測試代碼來,

例2. manual.py

  1. from widget import Widget  
  2. # 執(zhí)行測試的類  
  3. class TestWidget:  
  4. def testSize(self):  
  5. expectedSize = (40, 40);  
  6. widget = Widget()  
  7. if widget.getSize() == expectedSize:  
  8. print "test [Widget]: getSize works perfected!"  
  9. else:  
  10. print "test [Widget]: getSize doesn't work!"  
  11. # 測試  
  12. if __name__ == '__main__':  
  13. myTest = TestWidget()  
  14. myTest.testSize() 

稍一留心你不難發(fā)現(xiàn)這種手工測試方法存在許多問題。首先,測試程序的寫法沒有一定的規(guī)范可以遵循,十個程序員完全可能寫出十種不同的測試程序來,如果每個 Python程序員都有自己不同的設(shè)計測試類的方法,光維護(hù)被測試的類就夠麻煩了,誰還顧得上維護(hù)測試類。其次,需要編寫大量的輔助代碼才能進(jìn)行單元測試,例1中用于測試的代碼甚至比被測試的代碼還要多,而這毫無疑問將增大Python程序員的工作量。

為了讓單元測試代碼能夠被測試和維護(hù)人員更容易地理解,最好的解決辦法是讓開發(fā)人員遵循一定的規(guī)范來編寫用于測試的代碼,具體到Python程序員來講,則是要采用 PyUnit這一自動測試框架來構(gòu)造單元測試用例。目前PyUnit已經(jīng)得到了大多數(shù)Python開發(fā)人員的認(rèn)可,成了事實上的Python單元測試標(biāo)準(zhǔn)。如果采用 PyUnit來進(jìn)行同樣的測試,則測試代碼將如例3所示:

例3. auto.py

  1. from widget import Widget  
  2. import unittest  
  3. # 執(zhí)行測試的類  
  4. class WidgetTestCase(unittest.TestCase):  
  5. def setUp(self):  
  6. self.widget = Widget()  
  7. def tearDown(self):  
  8. self.widget = None 
  9. def testSize(self):  
  10. self.assertEqual(self.widget.getSize(), (40, 40))  
  11. # 構(gòu)造測試集  
  12. def suite():  
  13. suite = unittest.TestSuite()  
  14. suite.addTest(WidgetTestCase("testSize"))  
  15. return suite  
  16. # 測試  
  17. if __name__ == "__main__":  
  18. unittest.main(defaultTest = 'suite'


在采用Python單元測試框架后,用于測試的代碼做了相應(yīng)的改動:

用import語句引入unittest模塊。

讓所有執(zhí)行測試的類都繼承于TestCase類,可以將TestCase看成是對特定類進(jìn)行測試的方法的集合。

在setUp()方法中進(jìn)行測試前的初始化工作,并在tearDown()方法中執(zhí)行測試后的清除工作,setUp()和tearDown()都是TestCase類中定義的方法。

在testSize()中調(diào)用assertEqual()方法,對Widget類中g(shù)etSize()方法的返回值和預(yù)期值進(jìn)行比較,確保兩者是相等的,assertEqual()也是TestCase類中定義的方法。

提供名為suite()的全局方法,PyUnit在執(zhí)行測試的過程調(diào)用suit()方法來確定有多少個測試用例需要被執(zhí)行,可以將TestSuite看成是包含所有測試用例的一個容器。

雖然看起來有點復(fù)雜,但PyUnit使得所有的Python程序員都可以使用同樣的Python單元測試方法,測試過程不再是雜亂無章的了,而是在同一規(guī)范指導(dǎo)下進(jìn)行的有序行為,這就是使用PyUnit這一自動單元測試框架所帶來的最大好處。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2021-03-28 23:03:50

Python程序員編碼

2017-01-14 23:26:17

單元測試JUnit測試

2017-01-16 12:12:29

單元測試JUnit

2017-01-14 23:42:49

單元測試框架軟件測試

2024-10-16 16:09:32

2023-07-26 08:58:45

Golang單元測試

2017-03-23 16:02:10

Mock技術(shù)單元測試

2012-05-17 09:09:05

Titanium單元測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2022-12-08 08:01:02

Python測試單元

2020-08-18 08:10:02

單元測試Java

2023-08-02 13:59:00

GoogleTestCTest單元測試

2019-01-29 09:00:44

PyHamcrest單元測試框架

2011-07-04 18:16:42

單元測試

2020-05-07 17:30:49

開發(fā)iOS技術(shù)

2021-05-05 11:38:40

TestNGPowerMock單元測試

2011-08-11 13:02:43

Struts2Junit

2011-05-16 16:52:09

單元測試徹底測試

2021-09-27 13:02:05

Python技巧測試

2015-05-08 10:29:59

OCMockiOS測試
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人精品福利 | 日本久久久影视 | 欧美第一页 | 国产综合一区二区 | 在线一级片 | 激情久久久久 | 免费在线看黄视频 | 午夜一区二区三区在线观看 | 一区二区三区日韩 | 亚洲视频二区 | 男女羞羞视频网站 | 国产精品久久久久久二区 | 午夜精品久久久久久久久久久久 | 中文字幕一二三区 | 懂色av色香蕉一区二区蜜桃 | 亚洲精品4 | 国产十日韩十欧美 | 日韩美av | 久久久精品网 | 九色 在线 | 少妇精品亚洲一区二区成人 | 一区在线观看 | 精品国产色 | 在线观看中文字幕 | 欧美在线观看免费观看视频 | 一区二区在线看 | 亚洲精品一区二区三区中文字幕 | 日本成人中文字幕 | 午夜天堂精品久久久久 | 午夜免费福利电影 | 亚洲精品久久久久国产 | 亚洲www啪成人一区二区麻豆 | 欧美成视频在线观看 | 精品美女视频在线观看免费软件 | 情侣黄网站免费看 | 国产不卡一区 | 日韩免费av一区二区 | 国产成人99久久亚洲综合精品 | 罗宾被扒开腿做同人网站 | 国产精品入口 | 日韩在线观看中文字幕 |