unittest運行時指定運行順序


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM