unittest執行測試用例的幾種方式

1、通過unittest.main()來執行測試用例的方式:

import unittest 

class UCTestCase(unittest.TestCase):
    def setUp(self):
        #測試前需執行的操作
        .....
    def tearDown(self):
        #測試用例執行完後所需執行的操作
        .....
    # 測試用例1
    def test1(self):
        #具體的測試腳本
        .....
    # 測試用例2
    def test2(self):
        #具體的測試腳本
        .....
if __name__ == "__main__":
    unittest.main()


2、通過testsuit來執行測試用例的方式:

import unittest 
# 執行測試的類
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #測試前需執行的操作
        .....
    def tearDown(self):
        #測試用例執行完後所需執行的操作
        .....
            
    # 測試用例1
    def test1(self):
        #具體的測試腳本
        ......
    # 測試用例2
    def test2(self):
        #具體的測試腳本
        ......
if __name__ == "__main__":
    # 構造測試集
    suite = unittest.TestSuite()
    suite.addTest(UCTestCase("test1"))
    suite.addTest(UCTestCase("test2"))
    # 執行測試
    runner = unittest.TextTestRunner()
    runner.run(suite)


3、通過testLoader方式:

import unittest
class TestCase1(unittest.TestCase):
    def testCase1(self):
    print("a")
    def testCase2(self):
    print("b")


class TestCase2(unittest.TestCase):
    def testCase1(self):
        print("a1")
    def testCase2(self):
        print("b1")

if __name__ == "__main__":
    #此用法可以同時測試多個類
    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2)
    suite = unittest.TestSuite([suite1, suite2])
    unittest.TextTestRunner(verbosity=2).run(suite)

4.通過discover方式加載某路徑下的所有測試用例

import unittest

# discover可以一次調用多個腳本
# test_dir 被測試腳本的路徑
# pattern 腳本名稱匹配規則
test_dir = "./test_case"
discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py")
# 匹配test_case目錄下所有以test開頭的py文件,執行這些py文件下的所有測試用例


if __name__ == "__main__":
    runner=unittest.TextTestRunner()
    runner.run(discover)


下面針對上述腳本中應用到的unittest模塊下的幾個成員進行簡單的介紹,以便於理解上述代碼:
TestCase:所有測試用例的基本類,給一個測試方法的名字,就會返回一個測試用例實例;
TestSuit:組織測試用例的實例,支持測試用例的添加和刪除,最終將傳遞給  testRunner進行測試執行;
TextTestRunner:進行測試用例執行的實例,其中Text的意思是以文本形式顯示測試結果。測試的結果會保存到TextTestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息;
TestLoader:用來加載TestCase到TestSuite中的,其中有幾個  loadTestsFrom__()方法,就是從各個地方尋找TestCase,創建它們的實例,然後add到TestSuite中,再返回一個TestSuite實例;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章