unitest自動化測試框架核心要素以及應用
1. unittest核心要素
-
unittest介紹
-
測試框架,不僅僅用於單元測試
-
python自動的測試包
-
用法和django.test.TestCase類似
-
1.1、unitest介紹和核心要素
自動化測試最初接觸的就是python中的unitest框架,因為它是python自帶的一套測試框架,學習起來也相對較容易,下面是unitest框架的四個概念(較為一目瞭然):
test case:就是我們的測試用例,unittest中提供了一個基本類TestCase,可以用來建立新的測試用例,一個TestCase的例項就是一個測試用例;unittest中測試用例方法都是以test開頭的,且執行順序會按照方法名的ASCII值排序。
test fixure:測試夾具,用於測試用例環境的搭建和銷燬。即用例測試前準備環境的搭建(SetUp前置條件),測試後環境的還原(TearDown後置條件),比如測試前需要登入獲取token等就是測試用例需要的環境,執行完後執行下一個用例前需要還原環境,以免影響下一條用例的測試結果。
test suite:測試套件,用來把需要一起執行的測試用例集中放到一塊執行,相當於一個籃子。我們可以使用TestLoader來載入測試用例到測試套件中。
test runner:用來執行測試用例的,並返回測試用例的執行結果。它還可以用圖形或者文字介面,把返回的測試結果更形象的展現出來,如:HTMLTestRunner
1.2、unittest核心要素的使用
# ---*--- encoding: utf-8 ---*---
'''
@Author : {gan sir}
@Time : 2022/3/4 14:22
'''
import unittest
#測試類、繼承於unittest.TestCase
class MyTest(unittest.TestCase):
def test_1(self):
print("test_1")
def test_1(self):
print("test_1")
if __name__ == '__main__':
#類的外面
#2、容器,容器新增測試用例
suit = unittest.BaseTestSuite()
#測試用例的執行順序,按新增的順序執行
suit.addTest(MyTest('test_1'))
suit.addTest(MyTest('test_1'))
#3、執行容器中的測試用例
runner = unittest.TextTestRunner()
runner.run(suite)
1.3、瞭解Fixture
測試類中:實現了前、後置方法,他就是一個fixture
1.4、掌握defaultTestLoader
# ---*--- encoding: utf-8 ---*---
'''
@Author : {gan sir}
@Time : 2022/3/4 14:22
'''
import unittest
# 測試類、繼承於unittest.TestCase
class MyTest(unittest.TestCase):
def test_1(self):
print("test_11111111111111")
def test_1(self):
print("test_2222222222222")
if __name__ == '__main__':
#2.容器,容器新增測試用例
#預設找指定路徑下,所有test開標頭檔案
#引數1;路徑,引數2:指定檔案
suite = unittest.defaultTestLoader.discover('./','test_2_demo.py')
#3.執行容器中的測試用例
runner = unittest.TextTestRunner()
runner.run(suite)
2、掌握unitest基本使用
import unittest # unittest的單元測試框架
class TestConut(unittest.TestCase): # TestConut指類的名字,繼承了TestCase這個類,即擁有了該類的所有方法,首字母大寫
@classmethod
def setUpClass(cls) -> None:
print('setUpClass')
def setUp(self) -> None: # 這裡setup指執行測試用例之前的預操作,即每次執行一條測試用例的時候都會執行該操作
print('test start')
def test_01(self): # 此框架所定義的函式名執行測試用例的時候必須以test開頭,且執行測試用例時會預設按照阿拉伯數字的順序執行及1,2,3,4...
print('執行test_01測試')
def test_02(self):
print('執行test_02測試')
def test_03(self):
print('執行test_03測試')
def test_s(self):
print('test_s')
a = 1 + 1
self.assertEqual(a,2,'結果不為2')
def test_f(self):
print('test_f')
a = 1 + 2
self.assertEqual(a,3,'結果不為3')
def tearDown(self): # 這裡和上面的setup相對應,即執行完每個測試用例之後的結束操作,如關閉瀏覽器
print('test end')
@classmethod
def tearDownClass(cls):
print('最後結束的!')
if __name__ =='_main_':
unittest.main()
3、斷言
# arg1和arg2相等,測試通過,標誌為T。
# arg1和arg2不相等,測試不通過,標誌為F,丟擲異常,顯示msg的資訊
unittest.assertEqual(arg1,arg2,msg=None)
本文來自部落格園,作者:ganfd,轉載請註明原文連結:https://www.cnblogs.com/ganfd/p/15965210.html