unittest框架和pytest框架對比
類型 | unittest框架 | pytest框架 |
---|---|---|
安裝 | 標準庫,無需額外安裝 | 第三方單元測試庫,需要安裝 |
用例編寫 | 測試類必須要繼承 unittest.TestCase | 測試類命名以"Test"開頭,無需繼承,用例可以是函數,也可以是類,測試方法和測試文件名必須以“test_”開頭或者"_test"結尾 |
用例的前置和后置 | 提供了setUp/tearDown,每個用例運行前、結束后運行一次。setUpClass和tearDownClass,用例執行前、結束后,只運行一次 | 在函數前使用@pytest.fixture()裝飾器,fixture使用范圍可以是:function(函數級別)、class、module(模塊級別)、package(包級別)、多個測試類可以共用一個session(定義一個方法-使用yield分割,yield前面的代碼是前置,yield后面的代碼則是后置) |
斷言 | assertEqual、assertIn、assertTrue、assertFalse等 | 直接在assert 后面接表達式 |
測試報告 | 使用HTMLTestRunnerNew庫 | pytest-HTML、allure報告插件 |
失敗重跑 | 不支持 | 通過插件rerunfailures支持重運行機制 |
參數化 | 使用ddt庫 | 直接使用@pytest.mark.parametrize裝飾器 |
收集用例 | 使用TestLoader類+TestSuite類 | 根據test模塊自動收集用例 |
篩選用例 | 默認執行全部,可以篩選類名、函數名、模塊名執行 | 通過@pytest.mark標記測試用例,執行前加-m即可運行標記的用例 |
插件 | 很少 | 比unittest插件相對多很多 |