前言
unittest單元測試框架不僅可以適用於單元測試,還可以適用自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。
unittest中最核心的部分是:TestFixture、TestCase、TestSuite、TestRunner 本次我們講述TestCase
操作
現在我們有這樣一個程式碼
- class MathMethod: #建立了一個算數的類
def __init__(self,a,b): 定義一個初始化函式/方法
self.a = a
self.b = b
def add(self):#加法 加法的函式
return self.a + self.b
def multi(self):#乘法 乘法的函式
return self.a * self.b
我們往MathMethod()這個類裡,傳遞2個數,然後呼叫加法就會自動算出2個數相加的和,如果呼叫乘法,就會算出乘法的值
重點來了,我們寫好一串程式碼之後,我們怎麼樣自測我們的類、函式 是否都正確呢?
我們可以用單元測試 去測試我們的程式碼是否都正確。
首先我們要匯入我們的unitest
import unitest
class Testmathmethod(unittest.TestCase): #繼承了unitest裡面的testcase類,專門用來寫用例的
'''
一個函式就是一個用例,不能傳遞引數,只有self關鍵字
所有的用例都是test開頭(函式)
執行函式(用例)是根據ascii編碼執行的,abcdef。。。
'''
def test_add_two_positive(self):#兩個正數相加
res = MathMethod(1,1).add()
print("1+1的結果是:",res)
def test_add_two_zero(self): #兩個0相加
res = MathMethod(0,0).add()
print("0+0的結果是:",res)
def test_add_two_negative(self): #兩個負數相加
res = MathMethod(-1,-2).add()
print("-1+-2的結果是:",res)
當我們對加法進行了我們的用例編寫之後,用函式的方式去執行
- if __name__ == '__main__':
unittest.main()
執行完看下我們的執行結果
我們來解析一下我們的執行結果
1:... 三個點代表執行了3次,有3個成功了,F代表斷言失敗了,E代表Error 失敗 ..F..E這個意思是1、2條用例成功,第三條斷言失敗,第45條成功,第6條失敗
2.一共執行了3條用例,一共用了0.002s時間
3.ok,第一條用例執行情況,第二條用例執行情況,第三條執行情況
那麼有小夥伴就會有疑惑,我明明 寫用例的時候第一條寫的是1+1 第二條寫的是 0+ 0 第三條寫的是 -1+ -2
為什麼執行結果卻不是按照我寫的呢?
其實他是按照ascii 碼的順序執行的,例如abcdefg......的順序
看下我們寫的用例
- test_add_two_positive #兩個正數相加
- test_add_two_zero #兩個0相加
- test_add_two_negative 兩個負數相加
如果根據ascii碼的順序, n > P > Z
- test_add_two_negative #兩個負數相加
- test_add_two_positive #兩個正數相加
- test_add_two_positive #兩個0相加
那也就與我們的輸出值保持了一致