您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)使用Python 測試框架unittest和pytest,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、Unittest
Unittest是Python標準庫中自帶的單元測試框架,Unittest有時候也被稱為PyUnit,就像JUnit是Java語言的標準單元測試框架一樣,Unittest則是Python語言的標準單元測試框架。
Unittest支持自動化測試,測試用例的初始化、關(guān)閉和測試用例的聚合等功能,它有一個很重要的特性:它是通過類(class)的方式,將測試用例組織在一起。
示例:
運行結(jié)果
注:unittest有一個關(guān)聯(lián)模塊unittest2,但unittest2僅適用于Python 2.4-2.6。這是由于從Python 2.7開始,unittest增加一些新的特性。為了在老的版本中支持這些特性,所以提供了unittest2這個庫。但對于Python 2.7及之后的版本,unittest是唯一的。本次示例中使用的為python2.7。
二、Pytest
Pytest是Python的另一個第三方單元測試庫。它的目的是讓單元測試變得更容易,并且也能擴展到支持應用層面復雜的功能測試。
pytest的特性有:
示例:
執(zhí)行結(jié)果:
三、Unittest vs Pytest
unittest | pytest | |
用例編寫規(guī)則 | 1)測試文件必須先import unittest 2)測試類必須繼承unittest.TestCase 3)測試方法必須以“test_”開頭 4)測試類必須要有unittest.main()方法 | 1)測試文件名必須以“test_”開頭或者"_test"結(jié)尾(如:test_ab.py) 2)測試方法必須以“test_”開頭 3)測試類命名以"Test"開頭 |
用例分類執(zhí)行 | 默認執(zhí)行全部用例,也可以通過加載testsuit,執(zhí)行部分用例 | 可以通過@pytest.mark來標記類和方法,pytest.main加入?yún)?shù)("-m")可以只運行標記的類和方法 |
用例前置和后置 | 提供了setUp/tearDown,只能針對所有用例 | pytest中的fixture顯然更加靈活。可以任意自定義方法函數(shù),只要加上@pytest.fixture()這個裝飾器,那么被裝飾的方法就可以被使用 |
參數(shù)化 | 需依賴ddt庫 | 使用@pytest.mark.parametrize裝飾器 |
斷言 | 很多斷言格式(assertEqual、assertIn、assertTrue、assertFalse) | 只有assert一個表達式,用起來比較方便 |
報告 | 使用HTMLTestRunnerNew庫 | 有pytest-HTML、allure插件 |
失敗重跑 | 無此功能 | pytest支持用例執(zhí)行失敗重跑,pytest-rerunfailures插件 |
總結(jié):
總體來說,unittest用例格式復雜,兼容性無,插件少,二次開發(fā)方便。pytest更加方便快捷,用例格式簡單,可以執(zhí)行unittest風格的測試用例,無須修改unittest用例的任何代碼,有較好的兼容性。pytest插件豐富,比如flask插件,可用于用例出錯重跑,還有xdist插件,可用于設(shè)備并行執(zhí)行,效率更高。
以上就是使用Python 測試框架unittest和pytest,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。