前言

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相加

那也就與我們的輸出值保持了一致