Unittest框架之測試套件:TestSuite

前言

  • 使用了unittest.main()方法執行當前模塊裏的測試用例。
  • 除此以外,Unittest還能夠經過測試套件構造測試用例集,再執行測試用例

將測試用例添加至TestSuite(測試套件)

方式一:加載測試用例

  • 先經過unittest.TestSuite() 建立測試套件實例對象,如:suite = unittest.TestSuite()
  • 再經過addTest() 往測試套件裏添加單個測試用例,或經過addTests([…]) 添加多個測試用例(列表中爲用例方法名)
  • 執行測試套件裏的測試用例
    - 問題?若是有多個用例,若是類裏100個用例?要添加100次?
# -*- coding: utf-8 -*-
# @Author : 微信公衆號:程序員一凡


import unittest

class TestHC(unittest.TestCase):

    def test01(self):
        print("用例1")

    def test02(self):
        print("用例2")

if __name__ == '__main__':

    """方式1添加單條用例"""
    # 建立suite實例
    suite = unittest.TestSuite()
    # 添加單條測試用例
    suite.addTest(TestHC("test02"))  **# addTest()裏參數格式爲:測試類('測試方法')**
    suite.addTest(TestHC("test01"))
	
	"""方式2添加多條用例"""
    # suite.addTests([TestHC('test02'), TestHC('test01')])

  

方式二:加載測試用例類

  • 先經過unittest.TestSuite() 建立測試套件實例對象。
  • 再經過unittest.TestLoader()建立加載對象,加載測試用例類
# -*- coding: utf-8 -*-
# @Author : 微信公衆號:程序員一凡

import unittest

class TestHC(unittest.TestCase):

    def test01(self):
        print("用例1")

    def test02(self):
        print("用例2")

class Test_Action(unittest.TestCase):
    def test03(self):
        print("用例3")

    def test04(self):
        print("用例4")

if __name__ == '__main__':

    """方式1添加單條用例"""
    # 建立suite實例
    suite = unittest.TestSuite()
    loader = unittest.TestLoader()
    suite.addTest(loader.loadTestsFromTestCase(TestHC))
    suite.addTest(loader.loadTestsFromTestCase(Test_Action))
	
	"""
	添加多個類的方法
	suite1 = unittest.TestLoader().loadTestsFromTestCase(TestHC)
    suite2 = unittest.TestLoader().loadTestsFromTestCase(Test_Action)
    suite = unittest.TestSuite([suite1, suite2])
    """

  

方法三:加載指定路徑裏的測試用例

  • 經過unittest.defaultTestLoader.discover()將指定路徑的測試用例加載至測試用例集。注意:這裏不須要建立unittest.TestSuite對象
  • 以下代碼所示,test_dir爲指定路徑。pattern=test_*.py 表示加載以test_開頭的模塊中的測試用例,指定運行某模塊時pattern參數指定全名便可,如:pattern=‘test_sum.py’。路徑跟pattern參數均可以自定義
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)

  

使用TextTestRunner執行測試用例

  • unittest框架執行測試用例以前,需先建立TextTestRunner實例,
  • 再調用該實例的run()方法
# 建立TextTestRunner實例
runner = unittest.TextTestRunner()
# 使用run()方法運行測試套件(即運行測試套件中的全部用例)
runner.run(suite)
相關文章
相關標籤/搜索