Python 自動化測試框架unittest與pytest的區別
阿新 • • 發佈:2022-03-11
unittest | pytest | |
用例編寫規則 |
1)測試檔案必須先import unittest 2)測試類必須繼承unittest.TestCase 3)測試方法必須以“test_”開頭 4)測試類必須要有unittest.main()方法 |
1)測試檔名必須以“test_”開頭或者"_test"結尾(如:test_ab.py) 2)測試方法必須以“test_”開頭 3)測試類命名以"Test"開頭 |
用例分類執行 | 預設執行全部用例,也可以通過載入testsuit,執行部分用例 | 可以通過@pytest.mark來標記類和方法,pytest.main加入引數("-m")可以只執行標記的類和方法 |
用例前置和後置 | 提供了setUp/tearDown,只能針對所有用例 | pytest中的fixture顯然更加靈活。可以任意自定義方法函式,只要加上@pytest.fixture()這個裝飾器,那麼被裝飾的方法就可以被使用 |
引數化 | 需依賴ddt庫 | 使用@pytest.mark.parametrize裝飾器 |
斷言 | 很多斷言格式(assertEqual、assertIn、assertTrue、assertFalse) | 只有assert一個表示式,用起來比較方便 |
報告 | 使用HTMLTestRunnerNew庫 | 有pytest-HTML、allure外掛 |
失敗重跑 | 無此功能 | pytest支援用例執行失敗重跑,pytest-rerunfailures外掛 |
總體來說,unittest用例格式複雜,相容性無,外掛少,二次開發方便。pytest更加方便快捷,用例格式簡單,可以執行unittest風格的測試用例,無須修改unittest用例的任何程式碼,有較好的相容性。pytest外掛豐富,比如flask外掛,可用於用例出錯重跑,還有xdist外掛,可用於裝置並行執行,效率更高