python測(cè)試框架unittest和pytest區(qū)別
(1)unittest提供了test cases、test suites、test fixtures、test runner相關(guān)的類,讓測(cè)試更加明確、方便、可控。使用unittest編寫用例,必須遵守以下規(guī)則:
測(cè)試文件必須先import unittest 測(cè)試類必須繼承unittest.TestCase 測(cè)試方法必須以“test_”開頭 測(cè)試類必須要有unittest.main()方法(2)pytest是python的第三方測(cè)試框架,是基于unittest的擴(kuò)展框架,比unittest更簡(jiǎn)潔,更高效。使用pytest編寫用例,必須遵守以下規(guī)則:
測(cè)試文件名必須以“test_”開頭或者'_test'結(jié)尾(如:test_ab.py) 測(cè)試方法必須以“test_”開頭。 測(cè)試類命名以'Test'開頭。總結(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á)式。
四、報(bào)告(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()
運(yùn)行結(jié)果:

pytest
import osimport 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)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢(shì)在哪?2. 基于android studio的layout的xml文件的創(chuàng)建方式3. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁效果(實(shí)例代碼)4. Android如何加載Base64編碼格式圖片5. 什么是python的自省6. 詳解Android studio 動(dòng)態(tài)fragment的用法7. 解決Android studio xml界面無法預(yù)覽問題8. 在IDEA中實(shí)現(xiàn)同時(shí)運(yùn)行2個(gè)相同的java程序9. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟10. Vuex localStorage的具體使用

網(wǎng)公網(wǎng)安備