前言
- 使用了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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262404.html
標籤:其他
