引言
unittest是Python標準庫中自帶的單元測驗框架,unittest可以組織執行測驗用例,并且提供了豐富的斷言方法,可以判斷測驗用例是否通過,最終生成測驗結果,
同步視頻知識與系列知識內容,可關注:【公眾號】:柒哥測驗;【WX】:Lee-890;
1. UnitTest介紹
用uinittest單元測驗框架可以進行web自動化測驗,
由于unittest是Python標準庫中自帶的單元測驗框架,因此安裝完Python后就存在,無需單獨安裝,
2.UnitTest核心要素
unittest核心的要素是TestCase,TestSuite,TextTestRunner,Fixture,
2.1 TestCase:測驗用例
- 一個TestCase就是一個測驗用例,
- 一個測驗用例就是一個完整的測驗流程,包括測驗前環境準備(SetUp),執行測驗代碼(run),以及測驗后環境的還原(tearDown),
- 一個測驗用例就是一個完整的測驗單元,通過運行這個測驗單元,可以對某一個問題進行驗證,用戶定義測驗用例需要繼承TestCase類,
一個測驗用例是在unittest中執行測驗的最小單元,它通過unittest提供的assert方法來驗證一組特定的操作和輸入以后得到的具體回應,unittest提供了一個名稱為TestCase的基礎類(unittest.TestCase),可以用來創建測驗用例,
2.2 TestSuite:測驗套件
一個測驗套件(TestSuite)是多個測驗用例的集合,是針對被測程式對應的功能和模塊創建的一組測驗,一個測驗套件內的測驗用例將一起執行,
- TestSuite()是測驗用例集合;
- 通過addTest()方法手動把TestCase添加到TestSuite中,也可通過TestLoader把TestCase自動加載到TestSuite(TestCases之間不存在現后順序),
2.3 TextTestRunner:測驗執行器
測驗執行器負責測驗執行調度并且生成測驗結果給用戶,
TestTestRunner是運行測驗用例的驅動類,其中的run方法可以執行TestCase、TestSuite,
2.4 TextTestResult:測驗報告
測驗報告用來展示所有執行用例的成功或者失敗狀態的匯總,執行失敗的測驗步驟的預期結果與實際結果,還有整體運行狀況和運行時間的匯總,
2.5 Fixture:測驗夾具
通過使用Fixture,可以定義在單個或多個測驗執行之前的準備作業和測驗執行之后的清理作業,
- 對一個測驗用例環境的搭建和銷毀,就是一個Fixture,通過覆寫TestCase的setUp()和tearDown()方法來實作;
- 如在測驗用例中需要訪問資料庫,那么可以在setUp()中建立資料庫連接并進行初始化,測驗用例執行后需要還原環境, tearDown的程序很重要,要為以后的TestCase留下一個干凈的環境,如在tearDown()中需要關閉資料庫連接,
3. 作業流程
unittest的整個流程如下:
- 首先需要撰寫TestCase;
- 再把TestCase添加到TestSuite中;
- 再由TextTestRunner來執行TestSuite;
- 運行的結果保存在TextTestResult中,
整個程序集成在unittest.main模塊中,
4. UnitTest案例實戰
4.1 UnitTest案例準備
通過PyCharm在工程目錄下,創建UnitTestDemo的Python package,UnitTest的案例均存放在UnitTestDemo下,
1. 創建基礎待測方法
在UnitTestDemo下新建mathfunc.py檔案,代碼如下:
加法,回傳a+b的值
def add(a,b):
return a+b
# 減法,回傳a-b的值
def minus(a,b):
return a-b
# 乘法,回傳a*b的值
def multi(a,b):
return a*b
# 除法,回傳a/b的值
def divide(a,b):
return a/b
2. 設計測驗用例
為前面的測驗方法設計測驗用例,在UnitTestDemo下創建test_mathfunc.py,代碼如下:
import unittest
from UnitTestDemo.mathfunc import *
class TestMathFunc(unittest.TestCase):
"""測驗mathfunc.py"""
def test_add(self):
"""測驗加法add()"""
self.assertEqual(3,add(1,2))
self.assertNotEqual(3,add(2,2))
def test_minus(self):
"""測驗減法minus"""
self.assertEqual(1,minus(3,2))
def test_multi(self):
"""測驗乘法multi"""
self.assertEqual(6,multi(2,3))
def test_divide(self):
"""測驗除法divide"""
self.assertEqual(2,divide(6,3))
self.assertEqual(2.5,divide(5,2))
4.2 組織與設定測驗用例的執行順序
通過PyCharm在工程目錄下,創建UnitTestDemo的Python package,UnitTest的案例均存放在UnitTestDemo下,
測驗套件(TestSuite)是多個測驗用例的集合,是針對被測程式的對應的功能和模塊創建的一組測驗,
通過TestSuite()的addTest()方法手動把TestCase添加到TestSuite中,或通過TestLoader把TestCase自動加載到TestSuite中,
1. 創建測驗套件
執行單條用例呼叫addTest()方法,在UnitTestDemo下創建test_suite.py,代碼如下:
import unittest
from UnitTestDemo.test_mathfunc import TestMathFunc
if __name__ == "__main__":
suite = unittest.TestSuite()
# addTest()添加單個TestCase
suite.addTest(TestMathFunc("test_multi"))
runner = unittest.TextTestRunner()
runner.run(suite)
執行多條測驗用例addTests()方法, test_suite.py代碼如下:
import unittest
from UnitTestDemo.test_mathfunc import TestMathFunc
if __name__ == "__main__":
suite = unittest.TestSuite()
# addTest()添加單個TestCase
#suite.addTest(TestMathFunc("test_multi"))
# addTests()執行加法、減法、除法
tests = [TestMathFunc("test_add"),TestMathFunc("test_divide"),TestMathFunc("test_minus")]
suite.addTests(tests)
runner = unittest.TextTestRunner()
runner.run(suite)
精講視頻
如果你覺的文章讀的不過癮,可以查看詳細的視頻教程,
- 《移動端[App]測驗必備技能》
地址:https://ke.qq.com/course/2145019 - UI自動化測驗:Selenium3自動化測驗
地址:https://ke.qq.com/course/3172187?tuin=9c43f38e - 《全堆疊測驗系列視頻》課程
地址:https://ke.qq.com/course/2525707?tuin=9c43f38e
測驗學習路線如下

熱銷圖書
圖書京東、當當有售
京東圖書地址
當當圖書地址

同步視頻知識與系列知識內容,歡迎可關注:【公眾號】:柒哥測驗;或【WX】:Lee-890交流
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489777.html
標籤:其他
