Python中的Unittest基本使用
前言:
Unittest又名單元測試,主要用於測試自己寫的代碼的正確性和完備性,也方便自己和他人對代碼的維護。在軟件開發過程中,測試驅動開發的理念是一種好的開發習慣。
例如現在我們寫瞭一個求絕對值的函數my_abs,存放在myAbs.py中
def my_abs(number): if not (isinstance(number, int) or isinstance(number, float)): raise ValueError("invalid value %s" % number) else: if(number >= 0): return number else: return -number
此處的my_abs函數對參數做瞭檢查,參數必須是一個數(python的數隻有int和float型)。那麼如果想要測試這個函數的正確性,我們需要寫一個測試函數,用於測試函數的各個分支情況。
基於unittest的的測試代碼如下:
import unittest from myAbs import my_abs class TestmyAbs(unittest.TestCase): def test_positive(self): self.assertEqual(my_abs(1), 1) def test_zero(self): self.assertEqual(my_abs(0), 0) def test_negative(self): self.assertEqual(my_abs(-1), 1) def test_inputerror(self): with self.assertRaises(ValueError): my_abs("1") if __name__ == "__main__": unittest.main()
上述代碼存放在test_myAbs.py中。
unittest的基本使用方法是:
- 1. 文件命名以test_開頭,這樣方便unittest自動執行,unittest能自動識別目錄下test_開頭的文件執行
- 2. import unittest 這個是運行unittest的前提
- 3. 定義class要以Test開頭,必須要從unittest.TestCase繼承,且不能有init方法,測試的方法或者函數以test_開頭
- 4. 測試方法中使用assert進行斷言
在上面測試代碼的TestMyabs類的方法中,分別對正數,零和負數的情況進行瞭測試,使用assertEqual進行結果的判定;另外測試中還對輸入參數是無效的情況進行瞭判定,使用瞭with語句和assertRaises的方式,針對期望拋出來的異常進行判定
unittest的運行方式:
1. 單獨運行test_myAbs.py文件,前提是在文件尾增加
if __name__ == "__main__": unittest.main()
2. 發送命令 python -m unittest .\myAbs.py
當發送命令python -m unittest時,會執行當前目錄下所有test_開頭的文件
運行結果如下:
Testing started at 4:43 PM ... Launching pytest with arguments C:/work/myPythonPrj/test_myAbs.py --no-header --no-summary -q in C:\work\myPythonPrj ============================= test session starts ============================= collecting ... collected 4 items test_myAbs.py::TestmyAbs::test_inputerror PASSED [ 25%] test_myAbs.py::TestmyAbs::test_negative PASSED [ 50%] test_myAbs.py::TestmyAbs::test_positive PASSED [ 75%] test_myAbs.py::TestmyAbs::test_zero PASSED [100%] ============================== 4 passed in 0.03s ============================== Process finished with exit code 0
到此這篇關於Python中的Unittest基本使用的文章就介紹到這瞭,更多相關Python Unittest 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python unittest單元測試的步驟分析
- Python接口自動化系列之unittest結合ddt的使用教程詳解
- python中的unittest框架實例詳解
- 基於Python的接口自動化unittest測試框架和ddt數據驅動詳解
- python中使用 unittest.TestCase單元測試的用例詳解