基于python語言:unittest载慈、pytest
基于Java語言:junit丰包、testng(Java的本次不做講解)
unittest饶唤、pytest框架區(qū)別
1肄程、用例編寫規(guī)則
unittest:提供了testcase測試用例睦擂,testsuites測試套件叶骨、testfixtrue測試固件或者夾具,testloader測試加載器祈匙,testrunner測試運行器忽刽。必須遵守以下原則:
(1)測試文件必須先導(dǎo)入import uinttest
(2)測試類必須繼承unittest.TestCase
(3)測試方法必須以test開頭
pytest:是python的第三方測試框架,基于unittest擴展框架夺欲,必須遵守以下規(guī)則:
(1)測試文件必須以test_開頭或者_test結(jié)尾
(2)測試類必須以Test開頭
(3)測試方法必須以test開頭
2跪帝、用例的前置和后置
unittest:
setUp/tearDown :在每個用例之前和之后運行一次
setUpClass/tearDownClass:在每個類之前和之后運行一次
setUpModel/tearDownModel:在每個模塊之前和之后運行一次
pytest:
方法級:
setup_method/teardown_method 在方法之前和之后執(zhí)行
setup/teardown
函數(shù)級:
setup_function/teardown_function 在函數(shù)之前和之后執(zhí)行
或者在函數(shù)之前加上@pytest.fixture()
類級:
setup_class/teardown_class 在類之前和之后執(zhí)行
模塊級:
setup_module/teardown_module 在模塊之前和之后執(zhí)行
3、斷言
unittest:assertTrue些阅,assertEqual伞剑、assertIn
pytest:assert
4、報告
unittest:htmltestrunner
pytest:插件市埋、pytest-HTML黎泣、allure
5、失敗重跑
unittest:無
pytest:pytest-rerunfailures插件
6缤谎、數(shù)據(jù)驅(qū)動
unittest:ddt
pytest:@pytest.mark.parametrize裝飾器
7抒倚、用例分類執(zhí)行
unittest:默認執(zhí)行所有用例,也可以通過testsuite來執(zhí)行部分用例坷澡,或者加參數(shù)-k
pytest:@pytest.mark