本文實例講述了Python單元測試。分享給大家供大家參考,具體如下:
在Python中進行單元測試需要用到自動單元測試框架PyUnit,Python2.1及其以后的版本都將PyUnit作為一個標準模塊(即python的unittest模塊),如果你很out,那么你需要從PyUnit網站下載源碼安裝后才能使用。
一、Python單元測試范例
測試最基本的原理是比較預期結果是否與實際執行結果相同,如果相同則測試成功,否則測試失敗。為了更好地理解自動測試框架PyUnit,下面會以對Widget類進行測試為例說明之:
#widget.py#將要被測試的類Widgetclass Widget: def __init__(self, size = (40, 40)): self._size = size def getSize(self): return self._size def resize(self, width, height): if width < 0 or height < 0: raise ValueError, "illegal size" self._size = (width, height) def dispose(self): pass
二、測試用例TestCase
軟件測試中最基本的組成單元式測試用例(test case),PyUnit使用TestCase類來表示測試用例,并要求所有用于執行測試的類都必須從該類繼承。TestCase子類實現的測試代碼應該是自包含的(self contained),即測試用例既可以單獨運行,也可以和其它測試用例構成集合共同運行。TestCase類中常用的函數或方法有:
setUp:進行測試前的初始化工作。
tearDown:執行測試后的清除工作。
failedinfo:表示不成立打印信息faliedinfo,為可選參數。
self.assertEqual(value1, value2, failedinfo):會無條件的導致測試失敗,不推薦使用。
self.assertTrue(, failedinfo):斷言value1 == value2。
self.assertFalse(, failedinfo):斷言value為真。
self.assertRaises(ValueError, self.widget.resize, -1, -1):斷言肯定發生異常,如果沒發生異常,則為測試失敗。參數1為異常,參數2為拋出異常的調用對象,其余參數為傳遞給可調用對象的參數。
TestCase在PyUnit測試框架中被視為測試單元的運行實體,Python程序員可以通過它派生自定義的測試過程與方法(測試單元),利用Command和Composite設計模式,多個TestCase還可以組合成測試用例集合。PyUnit測試框架在運行一個測試用例時,TestCase子類定義的setUp()、runTest()和tearDown()方法被依次執行,最簡單的測試用例只需要覆蓋runTest()方法來執行特定的測試代碼就可以了。
1、靜態方法
一個測試用例只對軟件模塊中一個方法進行測試,采用覆蓋runTest()方法來構造測試用例,這在PyUnit中稱之為靜態方法,舉例說明如下:
#static.pyfrom widget import Widgetimport unittest#執行測試的類class WidgetTestCase(unittest.TestCase): def runTest(self): widget = Widget() self.assertEqual(widget.getSize(), (40, 40))#測試if __name__ == "__main__": testCase = WidgetTestCase() testCase.runTest()
|
新聞熱點
疑難解答