標籤:單詞 通過 col 單元 pip3 運行 fail reason rgs
簡述unittest架構
unittest單元測試架構不僅可以適用於單元測試,還可以適用web UI 和 介面 API 自動化測試案例的開發與執行,該測試架構可組織執行測試案例,並且提供了豐富的斷言方法,判斷測試案例是否通過,最終產生測試結果。
一、unittest結構概覽
unittest中最核心的四個概念是:test fixture、test case, test suite, test runner/report
1、test fixture
① setup():每個測試函數運行前運行
② teardown():每個測試函數運行完後執行
③ setUpClass():必須使用@classmethod 裝飾器,所有test運行前運行一次
④ tearDownClass():必須使用@classmethod裝飾器,所有test運行完後運行一次
2、Testcase
a、編寫自己的測試案例必須繼承TestCase類
import unittestclass TestCase(unittest.TestCase)
b、編寫測試case:
def test_001_case1(self): print("case1")def test_002_case1(self): print("case2")
註:
1、測試案例的名字必須以test開頭,不以test命名的測試案例不會被載入運行(除在test命名的測試案例中調用外)
2、測試案例的執行順序可以自訂,如果以數字命名測試案例(如:test_001_case1、test_002_case1),則按照數字順序執行,如果不以數字命名則按照test後的英文單詞的字母順序作為執行順序
c、選擇性的執行測試case
"""
@unittest.skip(reason): skip(reason)裝飾器:無條件跳過裝飾的測試,並說明跳過測試的原因。@unittest.skipIf(reason): skipIf(condition,reason)裝飾器:條件為真時,跳過裝飾的測試,並說明跳過測試的原因。@unittest.skipUnless(reason): skipUnless(condition,reason)裝飾器:條件為假時,跳過裝飾的測試,並說明跳過測試的原因。@unittest.expectedFailure(): expectedFailure()測試標記為失敗。
"""
d、測試case常用的斷言
"""assertEqual(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a和b是否相等,相等則測試案例通過。assertNotEqual(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a和b是否相等,不相等則測試案例通過。assertTrue(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否True,是True則測試案例通過。assertFalse(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否False,是False則測試案例通過。assertIs(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否是b,是則測試案例通過。assertNotIs(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否是b,不是則測試案例通過。assertIsNone(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否None,是None則測試案例通過。assertIsNotNone(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否None,不是None則測試案例通過。assertIn(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否在b中,在b中則測試案例通過。assertNotIn(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否在b中,不在b中則測試案例通過。assertIsInstance(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是是b的一個執行個體,是則測試案例通過。assertNotIsInstance(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是是b的一個執行個體,不是則測試案例通過。"""
E、測試case參數化操作
測試case 預設是不支援傳參操作的,因此想要達到傳參效果,需要用到一個第三方模組進行參數化操作。
1、下載
pip3 install nose_parameterized
2、樣本:
import unittestfrom nose_parameterized import parameterizedclass Test(unittest.TestCase): @parameterized.expand( [ [‘xiaogang‘,‘123456‘,True], #可以是list,也可以是元祖 [‘‘,‘123456‘,True], [‘xiaogang‘,‘‘,False], [‘adgadg‘,‘123456‘,False] ] ) def test_login(self,args1,args2,args3): #這裡的參數對應上述列表裡的元素,啟動並執行時候會遍曆上述列表裡的二維列表直到所有元素都調用運行完成 print(args1,args2)
3、Text Suite
python - 簡述unittest架構