背景:在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

