Pytest和unittest的對比

2021-09-10 12:09:45 字數 1470 閱讀 8964

一、用例編寫規則

1.unittest提供了test cases、test suites、test fixtures、test runner相關的類,讓測試更加明確、方便、可控。使用unittest編寫用例,必須遵守以下規則:

(1)測試檔案必須先import unittest

(2)測試類必須繼承unittest.testcase

(3)測試方法必須以「test_」開頭

(4)測試類必須要有unittest.main()方法

2.pytest是python的第三方測試框架,是基於unittest的擴充套件框架,比unittest更簡潔,更高效。使用pytest編寫用例,必須遵守以下規則:

(1)測試檔名必須以「test_」開頭或者"_test"結尾(如:test_ab.py)

(2)測試方法必須以「test_」開頭。

(3)測試類命名以"test"開頭。

總結: pytest可以執行unittest風格的測試用例,無須修改unittest用例的任何**,有較好的相容性。 pytest外掛程式豐富,比如flask外掛程式,可用於用例出錯重跑;還有xdist外掛程式,可用於裝置並行執行。

二、用例前置和後置

1.unittest提供了setup/teardown,只能針對所有用例。

2.pytest提供了模組級、函式級、類級、方法級的setup/teardown,比unittest的setup/teardown更靈活。
pytest還可以在函式前加@pytest.fixture()裝飾器,在測試用例中裝在fixture函式。fixture的使用範圍可以是function,module,class,session。

firture相對於setup和teardown來說有以下幾點優勢:

三、斷言

1.unittest提供了assertequal、assertin、asserttrue、assertfalse。

2.pytest直接使用assert 表示式。

四、報告

1.unittest使用htmltestrunnernew庫。

2.pytest有pytest-html、allure外掛程式。

五、失敗重跑

1、unittest無此功能。

2、pytest支援用例執行失敗重跑,pytest-rerunfailures外掛程式。

六、引數化

1、unittest需依賴ddt庫,

2、pytest直接使用@pytest.mark.parametrize裝飾器。

七、用例分類執行

1、unittest預設執行全部用例,也可以通重載入testsuit,執行部分用例。

2、pytest可以通過@pytest.mark來標記類和方法,pytest.main加入引數("-m")可以只執行標記的類和方法。

**:

unittest和pytest的區別

一 用例編寫規則 1.unittest提供了test cases test suites test fixtures test runner相關的類,讓測試更加明確 方便 可控。使用unittest編寫用例,必須遵守以下規則 1 測試檔案必須先import unittest 2 測試類必須繼承uni...

Pytest和Unittest的區別

一 用例編寫規則 1.使用unittest編寫測試用例必須遵循以下規則 1.必須首先 匯入 import unittest 2.測試類必須要繼承 unittest.testcase 3.測試方法必須以test kai開頭 2.pyest是python的第三方測試框架,是基於unittest的擴充套件...

unittest和pytest資料驅動分析

資料驅動的思想在於引數與引數名的對應關係,一對一,多對多,然後對資料進行拆分 第一步,導包這裡要用到ddt,data,unpack 先講一下unpack的作用就是拆分,要不然資料就是乙個整體 from ddt import ddt,data,unpack注意看清楚 data裡面的內容 data un...