1. 程式人生 > 實用技巧 >利用python簡單實現unittest

利用python簡單實現unittest

python3的eval方法

eval() 函式用來執行一個字串表示式,並返回表示式的值

# 例如
a = [1,2,3,4]
b = "a"
print(eval(b))
# 執行結果
[1, 2, 3, 4]

利用eval方法實現unittest單元測試

實現只執行test開頭的case

先建一個demo
class Demo:
    def demo_01(self):
        print("這是demo_01")
    
    def test_demo(self):
        print("這是test_demo")
        
    def demo_03(self):
        print("這是demo_03")
        
        
class manage:
    dm = Demo()
    func_list=dir(dm)
    for func in func_list:
        if func.startswith("test"):
            eval("dm.%s()"%func)
# 執行結果
這是test_demo

實現 seUpClass、tearDownClass功能

class Demo:
    def setUpClass(self):
        print("這是setUpClass")

    def tearDownClass(self):
        print("這是tearDownClass")

    def demo_01(self):
        print("這是demo_01")

    def test_demo(self):
        print("這是test_demo")

    def demo_03(self):
        print("這是demo_03")


class manage:
    dm = Demo()
    func_list = dir(dm)
    teardownclass =None
    for data_prepare in func_list:
        if data_prepare == "setUpClass":
            eval("dm.%s()" % data_prepare)
        if data_prepare == "tearDownClass":
             teardownclass = data_prepare
    for func in func_list:
        if func.startswith("test"):
            eval("dm.%s()" % func)
    if teardownclass !=None:
        eval("dm.%s()"%teardownclass)
# 執行結果
這是setUpClass
這是test_demo
這是tearDownClass

實現setUp、tearDown功能

class Demo:
    def setUpClass(self):
        print("這是setUpClass")

    def tearDownClass(self):
        print("這是tearDownClass")

    def setUp(self):
        print("這是setUp")

    def tearDown(self):
        print("這是tearDown")

    def demo_01(self):
        print("這是demo_01")

    def test_demo(self):
        print("這是test_demo")

    def demo_03(self):
        print("這是demo_03")


class manage:
    dm = Demo()
    func_list = dir(dm)
    teardownclass = None
    setup = None
    teardown = None
    for data_prepare in func_list:
        if data_prepare == "setUpClass":
            eval("dm.%s()" % data_prepare)
        if data_prepare == "tearDownClass":
            teardownclass = data_prepare
        if data_prepare == "setUp":
            setup = data_prepare
        if data_prepare == "tearDown":
            teardown = data_prepare
    for func in func_list:
        if func.startswith("test"):
            if setup != None:
                eval("dm.%s()" % setup)
            eval("dm.%s()" % func)
            if teardown != None:
                eval("dm.%s()" % teardown)
    if teardownclass !=None:
        eval("dm.%s()"%teardownclass)
# 執行結果
這是setUpClass
這是setUp
這是test_demo
這是tearDown
這是tearDownClass

以上就是實現unittest單元測試的過程,以上內容均來自網際網路,轉載請註明