哈嘍,大家好,我是了不起!
由於軟體測試行業目前已經越來越卷,現在很多公司都會要求我們測試人員掌握編寫UI自動化或者是介面自動化,在編寫自動化時我們就需要使用到框架,今天我們就來了解一下python內建的框架:unittest框架
在學習之前我們先了解一下什麽是unittest的定義,unittest框架是什麽呢?
UnitTest是Python內建的一個單元測試框架,用它來做單元測試;內建的框架:不需要單外安裝,只要安裝了Python ,就可以使用;能夠組織多個用例去執行,內部提供了豐富的斷言,可以生成自動化測試報告
接下來我們可以先舉一個簡單的例子說明一下,在使用錢我們需要先匯入unittest模組
#匯入unittest模組
import unittest
接下來就是寫一個簡單的unittest執行程式碼
classfunc(unittest.TestCase):
deftest_1(self):
print("測試方法1")
deftest_2(self):
print("測試方法2")
if __name__ == '__main__':
func()
在使用unittest框架的時候,我們需要讓物件繼承TestCase,並且每一個函式名都要以test開頭,這個是unittest框架裏面的一些使用規則
可以看到運行程式後在控制台中打印了很多內容,我們來一次來說明一下這些內容都是什麽意思第一行:說明了我們開始運行程式的時間 第二行:首先是說明了我們使用的是python內部的uinttest方式去執行的程式,並將當前執行的資料夾和檔路徑也一起顯示出來 第三行:就是將我們執行test_1和test_2兩個函式結果打印了出來 第四行:顯示了我們本次程式執行的總耗時和是否成功,如果函式全部執行成功則顯示OK,如果有函式執行報錯則會顯示FAILED,失敗場景見下方範例
classfunc(unittest.TestCase):
deftest_1(self):
print("測試方法1")
deftest_2(self):
result=2/0
print(result)
deftest_3(self):
print("測試方法3")
if __name__ == '__main__':
func()
在了解如何編寫一個uinttest簡單物件後,我們接著了解一下在unittest框架常用的一個功能
1.setUp和tearDown
這兩個內建方法我們會經常使用到,setup標識在每個函式執行前都會執行一次,而teardown則是在每個函式執行後都會執行一次
classfunc(unittest.TestCase):
defsetUp(cls):
print("我會在每個函式執行前都執行一次")
deftest_1(self):
print("測試方法1")
deftest_2(self):
print("測試方法2")
deftearDown(cls):
print("我會在每個函式執行後都執行一次")
if __name__ == '__main__':
func()
執行後結果如下
可以看到不管我們寫了多少個函式,在執行後都會依次在每個函式執行前後都會跟著執行一次2.setUp class和tearDown class
setUp class和tearDown class方法都是屬於類方法,在執行測試類之前需要執行的方法是setUp class,在執行完測試類之後執行的方法是tearDown class,在使用這兩個方法需要註意的是,裝飾符"@ classmethod"和傳入參數"cls"都是不可缺少的
classfunc(unittest.TestCase):
@ classmethod
defsetUp class(cls) -> None:
print("在所有函式執行開始之前執行一次")
@ classmethod
deftearDown class(cls) -> None:
print("在所有函式執行結束之後執行一次")
deftest_1(self):
print("測試方法1")
deftest_2(self):
print("測試方法2")
if __name__ == '__main__':
func()
執行結果如下 這兩個方法也是使用評率較高的,比如在進行介面自動化時,通常會在setUp class中進行登入獲取token之類的;而setDown class多用於UI自動化中關閉視窗或者斷開資料庫連線等操作
3.skip跳過執行
使用unittest.skip可以選擇函式進行跳過不執行
classfunc(unittest.TestCase):
@unittest.skip
deftest_1(self):
print("測試方法1")
deftest_2(self):
print("測試方法2")
if __name__ == '__main__':
func()
classfunc(unittest.TestCase):
@unittest.skip("test_1函式本次不執行")
deftest_1(self):
print("測試方法1")
deftest_2(self):
print("測試方法2")
if __name__ == '__main__':
func()
4.斷言
unittest框架中為我們封裝了很多常用的斷言方法,比如我們經常使用的判斷數據相等的斷言,就直接使用內建的assertEqual方法
classfunc(unittest.TestCase):
deftest_1(self):
result=2
self.assertEqual(2,result,"判斷數位2和result變量值是否相等")
if __name__ == '__main__':
func()
classfunc(unittest.TestCase):
deftest_1(self):
result=2
self.assertEqual(3,result,"判斷數位2和result變量值是否相等")
if __name__ == '__main__':
func()
戳藍字 「 Python都知道 」 關註 我哦!
PS : Python都知道技術交流群(技術交流、摸魚、白嫖課程為主)又不定時開放了,感興趣的朋友,可以在下方公號內回復: 666 ,即可進入。
老規矩 ,道友們還記得麽, 右下角的 「在看」 點一下 , 如果感覺文章內容不錯的話,記得分享朋友圈讓更多的人知道!