unittest框架及原理


一、unittest框架及原理介紹

1、unittest最核心的四個概念

 2、UnittestTestCase類的用法

測試用例類:自己定義的類只要繼承於unittest中的TestCase那么這個類就是一個測試用例類

測試用例:測試用例類中,以test開頭的方法就是一條測試用例

用例執行通沒通過的評判標准:斷言異常

import unittest

from Login import login_check

class LoginTestCases(unittest.TestCase):
    def test_login_pass(self):
        #第一步:准備測試用例數據
        #1、用例的參數:可用元組,列表和字典
        data=("python24","lemonban")
        #2、預期結果
        expected={"code":0,"msg":"登錄成功"}
        #第二步:執行功能函數,獲取實際結果
        result=login_check(*data)
        #第三步:比對實際結果和預期結果
        # assert expected==result
        self.assertEqual(result,expected)

# 如果直接運行這個文件,就使用unittest中的main函數來執行測試用例
if __name__ == '__main__':
    unittest.main()

3、UnittestTestSuit類的用法

import unittest

#第一步:創建一個測試套件
suit=unittest.TestSuite()

#第二步:將測試用例加載到測試套件中
#第1種,通過模塊加載用例,把模塊名作為參數,將該模塊中所有測試用例全部加載到套件中
#創建一個加載對象
import Testcases
load=unittest.TestLoader()
suit.addTest(load.loadTestsFromModule(Testcases))

#第2種:通過測試用例類去加載,把模塊中的測試類作為參數,將該測試用例類中所有測試用例加載到套件中
import Testcases
load=unittest.TestLoader()
suit.addTest(load.loadTestsFromTestCase(Testcases.LoginTestCases))

#第3種,添加單條測試用例,先導入測試用例類,再創建一個測試類對象,把測試用例方法名作為參數(unittest.TestCase有參數為字符串類型)
from Testcases import LoginTestCases
# 創建一個用例對象
# 注意點:通過用例類去創建測試用例對象的時候,需要傳入用例的方法名(字符串類型)
case=LoginTestCases("test_login_pass")
suit.addTest(case)

# 第4種,指定測試用例的所在的目錄路徑,把路徑作為參數,將該路徑下的所有用例加載到套件中
loader = unittest.TestLoader()
suite.addTest(loader.discover(r"用例文件所在的目錄的絕對路徑"))

#第三步:創建一個測試運行程序啟動器

#第1種:使用unittest自帶的啟動器
runner=unittest.TextTestRunner()

#第四步:使用啟動器去執行套件,把套件作為參數
runner.run(suite)

4、使用TestRunerNew模塊生成html測試報告

from HTMLTestRunnerNew import HTMLTestRunner

#第三步:創建一個測試運行程序啟動器

#第2種:使用HTMLTestRunner傳入參數生產啟動器
#參數1:打開測試報告文件,必須是html后綴的文件,模式"wb",以二進制模式覆蓋寫入,將句柄傳給stream
#參數2:verbosity=2為默認參數,可以不用填寫
#參數3:tester,報告中顯示的測試人員
#參數4:description,報告的描述信息
#參數5:title,報告的標題
runner=HTMLTestRunner(stream=open("report.html","wb"),tester="xiaosongshu",description="描述信息",title="登錄功能測試報告")

5、Unittestfixture的使用

是寫在測試用例類里面的,用於測試環境搭建或銷毀

# 每條用例執行之前都會執行,用例的前置條件,以print輸出的在測試報告中會顯示出來
def setUp(self):
    print("用例{}開始執行--".format(self))

# 每條用例執行之后都會執行,用例的后置處理,以print輸出的在測試報告中會顯示出來
def tearDown(self):
    print("用例{}執行結束--".format(self))

# 當成測試用例類中的用例執行之前,會執行該方法,print輸出的不在報告中顯示,在控制台顯示
@classmethod
def setUpClass(cls):
    print("-----setup---classs-----")

# 當成測試用例類中的用例執行完畢,會執行該方法,print輸出的不在報告中顯示,在控制台顯示
@classmethod
def tearDownClass(cls):
    print("-----teardown---classs-----")


免責聲明!

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



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