python - 簡述unittest架構

來源:互聯網
上載者:User

標籤:單詞   通過   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架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.