unittest使用
1.單元測試
- 單元測試是指對軟體中的最小可測試單元進行檢查和驗證,Python中有一個自帶的單元測試框架unittest模組,不僅可以適用於單元測試,還可以適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果;
2.unittest庫中的基本元件
-
unittest.TestCase()
:是所有測試用例類繼承的基本類,一個類只要繼承了unittest中的TestCase類就是一個測試用例類,就可以在類中寫測試用例;
from unittest import TestCase, main
class MyTest(TestCase): # 繼承unittest.TestCase
def setUp(self):
# 測試用例執行前的初始化工作
print('開始執行')
def tearDown(self):
# 測試用例執行之後的善後工作
print('執行完畢')
def testWay(self):
print('這是測試用例')
if __name__ == '__main__':
main() # 執行所有的測試用例
-
unittest.TestSuite()
:用來建立測試套件,其中有一個addTest()方法可以將一個或多個測試用例新增到測試套件中,先新增的哪個方法就先執行哪個方法; -
unittest.TextTextRunner()
:通過該類中的run()方法來執行suite所組裝的測試用例; -
unittest.defaultTestLoader()
:通過該類下面的discover()方法可自動根據測試目錄start_dir匹 配查詢測試用例模組(以test開頭,以.py結尾的檔案,例如:test*.py), 並將查詢到的測試用例 組裝到測試套件,因此可以直接通過run()方法執行discover; -
unittest.skip()
:裝飾器,可過濾不需要執行的用例,使這個用例不執行; -
unittest.main()
:可以方便的將一個單元測試模組變為可直接執行的測試指令碼,main()方法使 用TestLoader類來搜尋所有包含在該模組中以“test”命名開頭的測試方法,並自動執行他們 ;
3.TestCase類中的方法
-
setUp()
方法:用於測試用例執行前的初始化。如測試用例中需要訪問資料庫,可以在setUp中建立資料庫連線並進行初始化。如果測試用例需要登入web,可以先獲取cookie,獲取檔案控制程式碼; -
tearDown()
方法:用於測試用例執行之後的善後工作,如關閉資料庫連線,關閉檔案; -
assert*()
:斷言方法,相當於if-else裡面的條件判斷,在執行測試用例的過程中,最終用例是否執行通過,是通過判斷測試得到的實際結果和預期結果是否相等決定的;
4.unittest中常用的斷言方法
-
assertEqual(self, first, second, msg=None)
:判斷兩個引數是否相等,如果相等則測試用例通過; -
assertNotEqual(self, first, second, msg=None)
:判斷兩個引數是否相等,如果不相等則測試用例通過; -
assertTrue(self, expr, msg=None)
:判斷是否為真,為真則測試用例通過; -
assertFalse(self, expr, msg=None)
:判斷是否為假,為假則測試用例通過; -
assertIs(a, b, msg=None)
:斷言a是否是b,如果是則測試用例通過。 -
更多的斷言方法可以檢視官網: https://docs.python.org/3/library/unittest.html#assert-methods
5.編寫測試用例
-
首先從unittest模組中匯入TestCase、main等需要用到的類;
-
然後自定義一個類繼承TestCase類;
-
可以重寫TestCase類中的setUp()初始化方法,和tearDown()清理方法,這兩個方法是成對出 現的;
-
然後編寫以字母開頭的測試用例, 執行順序預設是根據ASCII碼的順序載入測試用例,數字與字母的順序為:0-9,A-Z,a-z ;
-
最後呼叫unittest.main()方法將一個單元測試模組變成可以直接執行的測試指令碼,然後自動執行測試用例;
from unittest import TestCase, main
class MyTestCase(TestCase):
# setUp、tearDown每次執行一個test開頭的方法時,都會呼叫一次
def setUp(self):
print('setup')
def tearDown(self):
print('tearDown')
def test_1(self):
print('第一個測試用例')
def test_2(self):
print('第二個測試用例')
if __name__ == '__main__':
main()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908432/viewspace-2647254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- unittest系列(一)unittest簡介和示例
- unittest系列(三)unittest用例如何執行
- unittest筆記筆記
- unittest例項
- unittest系統(八)一文搞定unittest重試功能
- unittest斷言-assertIn
- Mock HttpContext in UnitTestMockHTTPContext
- unittest單元測試
- Python中的Unittest框架Python框架
- Java 中的 UnitTest 和 PowerMockJavaMock
- tep使用者手冊幫你從unittest過渡到pytest
- python介面自動化測試 —— unittest框架suite、runner詳細使用Python框架UI
- 『心善淵』Selenium3.0基礎 — 28、unittest中測試套件的使用套件
- Python中的單元測試框架:使用unittest進行有效測試Python框架
- 每週一個 Python 模組 | unittestPython
- 『心善淵』Selenium3.0基礎 — 29、使用HTMLTestRunner生成unittest的HTML報告HTML
- Python unittest.TestLoader()類的幾種尋找testcase的方法的使用Python
- unittest--TestCase 按宣告順序執行
- Python 自動化測試框架unittestPython框架
- Python 的單元測試之 unittestPython
- initialize or clean up your unittest within .net unit test
- selenium-webdriver(python) (十六) --unittest 框架WebPython框架
- 四.unittest介面自動化框架介紹框架
- 【python介面自動化】初識unittest框架Python框架
- Python的unittest做引數化測試Python
- 如何使得 unittest 的測試用例有序規劃?
- Python 自動化測試 必會模組 UnittestPython
- 含有token鑑權的介面專案使用unittest框架設計測試登入,充值的介面框架
- 自動化冒煙測試 Unittest , Pytest 哪家強?
- Laravel中 FeatureTest和 UnitTest的區別是什麼Laravel
- 測試平臺-unittest 指定順序執行用例
- 軟體測試培訓教程:pytest與unittest區別
- python+selenium+unittest+page object 如何部署到 jenkins?PythonObjectJenkins
- python 自動化測試 (一):安裝 requests,unittest,HTMLTestRunnerPythonHTML
- python的unittest測試框架的擴充套件淺談Python框架套件
- 不拼花哨,只拼實用:unittest指南,乾貨為王!
- python3+requests+unittest介面自動化例項講解Python
- python自動化測試框架pytest和unittest區別!!!Python框架