Unittest VS Pytest

作者:Gakki

01 Unittest

Unittest 是 Python標(biāo)準(zhǔn)庫中自帶的單元測(cè)試框架
Unittest 支持自動(dòng)化測(cè)試,測(cè)試用例的初始化、關(guān)閉和測(cè)試用例的聚合等功能,它有一個(gè)很重要的特性:它是通過類 ( class )的方式,將測(cè)試用例組織在一起。

02 Pytest

Pytest 是Python 的另一個(gè)第三方單元測(cè)試庫。它的目的是讓單元測(cè)試變得更容易,并且也能擴(kuò)展到支持應(yīng)用層面復(fù)雜的功能測(cè)試。
Pytest 的特性有:

  1. 支持用簡(jiǎn)單的 assert 語句實(shí)現(xiàn)豐富的斷言,無需復(fù)雜的 self.assert* 函數(shù)
  2. 自動(dòng)識(shí)別測(cè)試模塊和測(cè)試函數(shù)
  3. 模塊化夾具用以管理各類測(cè)試資源
  4. 對(duì) Unittest 完全兼容,對(duì) nose 基本兼容
  5. 豐富的插件生態(tài)

03 Unittest VS Pytest

區(qū)別 Unittest Pytest
用例編寫規(guī)則 1) 測(cè)試文件必須先 import unittest
2) 測(cè)試類必須繼承unittest.TestCase
3) 測(cè)試方法必須以 " test_ " 開頭
4) 測(cè)試類必須要有unittest.man()方法
1) 測(cè)試文件必須以 " test_ " 開頭或者 "_ test " 結(jié)尾。如:test_login.py
2) 測(cè)試方法必須以 " test_ " 開頭
3) 測(cè)試類命名以 " Test " 開頭
用例分類執(zhí)行 默認(rèn)執(zhí)行全部用例,也可以通過加載testsuit,執(zhí)行部分用例 可以通過@pytest.mark來標(biāo)記類和方法,pytest.main加入?yún)?shù) ( " -m " ) 可以只運(yùn)行標(biāo)記的類和方法
用例前置和后置 提供了setUp/tearDown,只能針對(duì)所有用例 pytest中的fixture顯然更加靈活??梢匀我庾远x方法函數(shù),只要加上@pytest.fixture()這個(gè)裝飾器,那么被裝飾的方法就可以被使用
參數(shù)化 需依賴ddt庫 使用@pytest.mark.parametrize裝飾器
斷言 很多斷言格式(assertEqual、assertIn、assertTrue、assertFalse) 只有assert一個(gè)表達(dá)式,用起來比較方便
報(bào)告 使用HTMLTestRunnerNew庫 有pytest-HTML、allure插件
失敗重跑 無此功能 pytest支持用例執(zhí)行失敗重跑,pytest-rerunfailures插件
  • 總體來說,Unittest 用例格式復(fù)雜,兼容性無,插件少,二次開發(fā)方便。Pytest 更加方便快捷,用例格式簡(jiǎn)單,可以執(zhí)行 Unittest 風(fēng)格的測(cè)試用例,無須修改 Unittest 用例的任何代碼,有較好的兼容性。Pytest 插件豐富,比如flask插件,可用于用例出錯(cuò)重跑,還有xdist插件,可用于設(shè)備并行執(zhí)行,效率更高。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容