python測試框架unittest和pytest區(qū)別
一、用例編寫規(guī)則
(1)unittest提供了test cases、test suites、test fixtures、test runner相關(guān)的類,讓測試更加明確、方便、可控。使用unittest編寫用例,必須遵守以下規(guī)則:
- 測試文件必須先import unittest
- 測試類必須繼承unittest.TestCase
- 測試方法必須以“test_”開頭
- 測試類必須要有unittest.main()方法
(2)pytest是python的第三方測試框架,是基于unittest的擴展框架,比unittest更簡潔,更高效。使用pytest編寫用例,必須遵守以下規(guī)則:
- 測試文件名必須以“test_”開頭或者"_test"結(jié)尾(如:test_ab.py)
- 測試方法必須以“test_”開頭。
- 測試類命名以"Test"開頭。
總結(jié): pytest可以執(zhí)行unittest風格的測試用例,無須修改unittest用例的任何代碼,有較好的兼容性。 pytest插件豐富,比如flask插件,可用于用例出錯重跑;還有xdist插件,可用于設(shè)備并行執(zhí)行。
二、用例前置和后置
(1)unittest提供了setUp/tearDown,每個用例運行前、結(jié)束后運行一次。setUpClass和tearDownClass,用例執(zhí)行前、結(jié)束后,只運行一次。
(2)pytest提供了模塊級、函數(shù)級、類級、方法級的setup/teardown,比unittest的setUp/tearDown更靈活。
三、斷言
(1)unittest提供了assertEqual、assertIn、assertTrue、assertFalse。
(2)pytest直接使用assert 表達式。
四、報告
(1)unittest使用HTMLTestRunnerNew庫。
(2)pytest有pytest-HTML、allure插件。
五、失敗重跑
(1)unittest無此功能。
(2)pytest支持用例執(zhí)行失敗重跑,pytest-rerunfailures插件。
六、參數(shù)化
(1)unittest需依賴ddt庫,
(2)pytest直接使用@pytest.mark.parametrize裝飾器。
使用示例
unittest
class DefaultTestCase(unittest.TestCase):
def setUp(self):
print "Start to run"
def tearDown(self):
print "Close"
class TestDefaultTestCase(DefaultTestCase):
def test_print_b(self):
print 'b'
def test_print_a(self):
print 'a'
if __name__ == '__main__':
unittest.main()
運行結(jié)果:

pytest
import os
import pytest
# pytest是python的單元測試框架
def func(x):
return x + 1
def test_a():
print("____test_a____")
assert func(2) == 5
def test_b():
print("____test_b____")
assert func(2) == 3
if __name__ == '__main__':
pytest.main(["-s","pytest1.py"])
以上就是python測試框架unittest和pytest區(qū)別的詳細內(nèi)容,更多關(guān)于unittest和pytest區(qū)別的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django自定義插件實現(xiàn)網(wǎng)站登錄驗證碼功能
這篇文章主要為大家詳細介紹了Django自定義插件實現(xiàn)網(wǎng)站登錄驗證碼功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
Pandas如何對Categorical類型字段數(shù)據(jù)統(tǒng)計實戰(zhàn)案例
這篇文章主要介紹了Pandas如何對Categorical類型字段數(shù)據(jù)統(tǒng)計實戰(zhàn)案例,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
解讀pandas交叉表與透視表pd.crosstab()和pd.pivot_table()函數(shù)
這篇文章主要介紹了pandas交叉表與透視表pd.crosstab()和pd.pivot_table()函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
Go語言基于Socket編寫服務(wù)器端與客戶端通信的實例
這篇文章主要介紹了Go語言基于Socket編寫服務(wù)器端與客戶端通信的實例,包括實現(xiàn)基于自定義通訊協(xié)議的Socket通信,需要的朋友可以參考下2016-02-02

