Python 測試框架unittest和pytest的優(yōu)劣
一、Unittest
Unittest是Python標(biāo)準(zhǔn)庫中自帶的單元測試框架,Unittest有時候也被稱為PyUnit,就像JUnit是Java語言的標(biāo)準(zhǔn)單元測試框架一樣,Unittest則是Python語言的標(biāo)準(zhǔn)單元測試框架。
Unittest支持自動化測試,測試用例的初始化、關(guān)閉和測試用例的聚合等功能,它有一個很重要的特性:它是通過類(class)的方式,將測試用例組織在一起。
示例:

運(yùn)行結(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的另一個第三方單元測試庫。它的目的是讓單元測試變得更容易,并且也能擴(kuò)展到支持應(yīng)用層面復(fù)雜的功能測試。
pytest的特性有:
支持用簡單的assert語句實(shí)現(xiàn)豐富的斷言,無需復(fù)雜的self.assert*函數(shù) 自動識別測試模塊和測試函數(shù) 模塊化夾具用以管理各類測試資源 對 unittest 完全兼容,對 nose基本兼容 支持Python3和PyPy3 豐富的插件生態(tài),已有300多個各式各樣的插件,社區(qū)繁榮示例:

執(zhí)行結(jié)果:

三、Unittest vs Pytest
unittest pytest 用例編寫規(guī)則 1)測試文件必須先import unittest2)測試類必須繼承unittest.TestCase
3)測試方法必須以“test_”開頭
4)測試類必須要有unittest.main()方法
1)測試文件名必須以“test_”開頭或者'_test'結(jié)尾(如:test_ab.py)2)測試方法必須以“test_”開頭
3)測試類命名以'Test'開頭
用例分類執(zhí)行 默認(rèn)執(zhí)行全部用例,也可以通過加載testsuit,執(zhí)行部分用例 可以通過@pytest.mark來標(biāo)記類和方法,pytest.main加入?yún)?shù)('-m')可以只運(yùn)行標(biāo)記的類和方法 用例前置和后置 提供了setUp/tearDown,只能針對所有用例 pytest中的fixture顯然更加靈活。可以任意自定義方法函數(shù),只要加上@pytest.fixture()這個裝飾器,那么被裝飾的方法就可以被使用 參數(shù)化 需依賴ddt庫 使用@pytest.mark.parametrize裝飾器 斷言 很多斷言格式(assertEqual、assertIn、assertTrue、assertFalse) 只有assert一個表達(dá)式,用起來比較方便 報(bào)告 使用HTMLTestRunnerNew庫 有pytest-HTML、allure插件 失敗重跑 無此功能 pytest支持用例執(zhí)行失敗重跑,pytest-rerunfailures插件總結(jié):
總體來說,unittest用例格式復(fù)雜,兼容性無,插件少,二次開發(fā)方便。pytest更加方便快捷,用例格式簡單,可以執(zhí)行unittest風(fēng)格的測試用例,無須修改unittest用例的任何代碼,有較好的兼容性。pytest插件豐富,比如flask插件,可用于用例出錯重跑,還有xdist插件,可用于設(shè)備并行執(zhí)行,效率更高。
以上就是Python 測試框架unittest和pytest的優(yōu)劣的詳細(xì)內(nèi)容,更多關(guān)于Python unittest和pytest的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. django queryset相加和篩選教程2. 利用ajax+php實(shí)現(xiàn)商品價格計(jì)算3. Java實(shí)現(xiàn)的迷宮游戲4. idea設(shè)置提示不區(qū)分大小寫的方法5. JS圖片懶加載庫VueLazyLoad詳解6. Java利用TCP協(xié)議實(shí)現(xiàn)客戶端與服務(wù)器通信(附通信源碼)7. 使用AJAX(包含正則表達(dá)式)驗(yàn)證用戶登錄的步驟8. Java PreparedStatement用法詳解9. Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類封裝10. IDEA 2020.1.2 安裝教程附破解教程詳解

網(wǎng)公網(wǎng)安備