單元測試框架對比

2021-09-27 08:57:35 字數 2003 閱讀 6699

一、用例編寫規則

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外掛程式,可用於裝置並行執行。      pytest與unittest的比較_python

二、用例前置和後置

1.unittest提供了setup/teardown,每個用例執行前、結束後執行一次。setupclass和teardownclass,用例執行前、結束後,只執行一次。
2.pytest提供了模組級、函式級、類級、方法級的setup/teardown,比unittest的setup/teardown更靈活。

模組級(setup_module/teardown_module)開始於模組始末,全域性的

函式級(setup_function/teardown_function)只對函式用例生效(不在類中)

類級(setup_class/teardown_class)只在類中前後執行一次(在類中)

方法級(setup_method/teardown_method)開始於方法始末(在類中)

類裡面的(setup/teardown)執行在呼叫方法的前後

pytest還可以在函式前加@pytest.fixture()裝飾器,在測試用例中裝在fixture函式。fixture的使用範圍可以是function,module,class,session。

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

命名方式靈活,不侷限於setup和teardown這幾個命名

conftest.py 配置裡可以實現資料共享,不需要import就能自動找到一些配置,可供多個py檔案呼叫。

scope=「module」 可以實現多個.py跨檔案共享前置

scope=「session」 以實現多個.py跨檔案使用乙個session來完成多個用例

用yield來喚醒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")可以只執行標記的類和方法。

go Test 單元測試 測試框架

1.建立乙個名為 test.go 的檔案 如果是包中的單元測試,就在包所在目錄下建立該檔案 並將下面的 新增到其中,函式命名統一為test t testing.t package main 包中的單元測試main替換成包名 import testing func testsum t testing....

Qt單元測試框架

qtestlib 框架提供了乙個簡單易用的單元測試框架,需要在工程檔案中新增qt testlib。先看乙個簡單的例子 此外,qt還提供了以下四個會被自動呼叫的private slot inittestcase 在測試開始前被呼叫 cleanuptestcase 在測試結束後被呼叫 init 每個測試...

Test Unit Ruby單元測試框架

test unit ruby單元測試框架 介紹 單元測試是xp的核心部分。xp是偉大的,單元測試已出現了很長一段時間,而且它是乙個很好的思想。好的單元測試的關鍵部分不是寫測試 而是要測試。兩者有什麼不同嗎?當然,如果你只是寫測試 而不用它,那麼你以後對 的修改將不會得到保證。換句話說,如果你已經測試...