(1)unittest提供了test cases、test suites、test fixtures、test runner相關(guān)的類,讓測(cè)試更加明確、方便、可控。使用unittest編寫用例,必須遵守以下規(guī)則:
(2)pytest是python的第三方測(cè)試框架,是基于unittest的擴(kuò)展框架,比unittest更簡(jiǎn)潔,更高效。使用pytest編寫用例,必須遵守以下規(guī)則:
總結(jié): pytest可以執(zhí)行unittest風(fēng)格的測(cè)試用例,無須修改unittest用例的任何代碼,有較好的兼容性。 pytest插件豐富,比如flask插件,可用于用例出錯(cuò)重跑;還有xdist插件,可用于設(shè)備并行執(zhí)行。
(1)unittest提供了setUp/tearDown,每個(gè)用例運(yùn)行前、結(jié)束后運(yùn)行一次。setUpClass和tearDownClass,用例執(zhí)行前、結(jié)束后,只運(yùn)行一次。
(2)pytest提供了模塊級(jí)、函數(shù)級(jí)、類級(jí)、方法級(jí)的setup/teardown,比unittest的setUp/tearDown更靈活。
(1)unittest提供了assertEqual、assertIn、assertTrue、assertFalse。
(2)pytest直接使用assert 表達(dá)式。
(1)unittest使用HTMLTestRunnerNew庫。
(2)pytest有pytest-HTML、allure插件。
(1)unittest無此功能。
(2)pytest支持用例執(zhí)行失敗重跑,pytest-rerunfailures插件。
(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()
運(yùn)行結(jié)果:
pytest
import os import pytest # pytest是python的單元測(cè)試框架 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測(cè)試框架unittest和pytest區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于unittest和pytest區(qū)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:陽泉 克拉瑪依 日照 金華 雙鴨山 貴州 臨汾 赤峰
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python測(cè)試框架unittest和pytest區(qū)別》,本文關(guān)鍵詞 python,測(cè)試,框架,unittest,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。