前言

unittest單元測試框架不僅可以適用於單元測試,還可以適用自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。

unittest中最核心的部分是:TestFixture、TestCase、TestSuite、TestRunner  本次我們講述TestCase

操作

現在我們有這樣一個程式碼    

  1. 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。。。

    '''


  1. 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)

    當我們對加法進行了我們的用例編寫之後,用函式的方式去執行  
  1. if __name__ == '__main__':
    unittest.main()

    執行完看下我們的執行結果
  1.  

我們來解析一下我們的執行結果

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......的順序
看下我們寫的用例 

  1. test_add_two_positive #兩個正數相加
  1. test_add_two_zero #兩個0相加
  1. test_add_two_negative 兩個負數相加

    如果根據ascii碼的順序, n > P > Z
  1. test_add_two_negative #兩個負數相加
  1. test_add_two_positive #兩個正數相加
  1. test_add_two_positive #兩個0相加

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

  1.