背景:在unittest中運行單元測試,是沒有順序的,如果要指定運行順序有兩種方式
方法1:在運行方法后,加上數字test_0 、test_1 這樣也會指定順序
方法2:使用不同的字母表示,因為在單元測試框架中會對比每個運行方法名的ascii碼,ascii碼越大執行越靠后
案例:
測試方法
# coding=utf-8 class Calc(object): def add(self, x, y, *d): # 加法計算 result = x + y for i in d: print(i) result += i return result def sub(self, x, y, *d): # 減法計算 result = x - y for i in d: result -= i return result @classmethod def mul(cls, x, y, *d): # 乘法計算 result = x * y for i in d: result *= i return result @staticmethod def div(x, y, *d): # 除法計算 if y != 0: result = x / y else: raise ZeroDivisionError return -1 for i in d: if i != 0: result /= i else: raise ZeroDivisionError return -1 return result if __name__=="__main__": c=Calc() print (c.add(1,2,3,4))
運行單元測試方法
import unittest from Calc import Calc class MyTest(unittest.TestCase): @classmethod def setUpClass(self): print (u"單元測試前,創建Calc類的實例") self.c = Calc() def test_3div(self): print ("run div()") self.assertEqual(Calc.div(8, 2, 4), 1, 'test div fail') # 具體的測試用例,一定要以test開頭,執行順序按照字母順序開頭 def test_0add(self): print ("run add()") self.assertEqual(self.c.add(1, 2, 12), 15, 'test add fail') def test_1sub(self): print ("run sub()") self.assertEqual(self.c.sub(2, 1, 3), -2, 'test sub fail') def test_2mul(self): print ("run mul()") self.assertEqual(Calc.mul(2, 3, 5), 30, 'test mul fail') def test_runb(self): print("run b") def test_runa(self): print ("run a") if __name__ == '__main__': unittest.main()# 啟動單元測試
執行結果
運行的數字排序、在相同的方法名時,對比不同字母的ascii碼,a是97 b是98