一 、用例編寫規(guī)則
- unittest提供了test cases、test suites、test fixtures、test runner相關(guān)的類,unittest編寫用例規(guī)則:
1.測(cè)試文件必須先import unittest
2.測(cè)試類必須繼承unittest.TestCase
3.測(cè)試方法必須以“test_”開頭
4.測(cè)試類必須要有unittest.main()方法
2.pytest是python的第三方測(cè)試框架,是基于unittest的擴(kuò)展框架,比unittest更簡(jiǎn)潔,更高效。使用pytest編寫用例,必須遵守以下規(guī)則:
(1)測(cè)試文件名必須以“test_”開頭或者"test"結(jié)尾(如:test_ab.py)
?。?)測(cè)試方法必須以“test”開頭。
?。?)測(cè)試類命名以"Test"開頭。
總結(jié): pytest可以執(zhí)行unittest風(fēng)格的測(cè)試用例,無(wú)須修改unittest用例的任何代碼,有較好的兼容性。 pytest插件豐富,比如flask插件,可用于用例出錯(cuò)重跑;還有xdist插件,可用于設(shè)備并行執(zhí)行。
二、用例前置和后置
1.uinttest 提供了 setUp/tearDown ,每個(gè)用例運(yùn)行前,結(jié)束后運(yùn)行一次.setUpClass 和 tearDownClass,用例執(zhí)行前
\結(jié)束后,只運(yùn)行一次
2.pytest提供了模塊級(jí)(setup_module/teardown_module)開始與模塊始末,全局的
- 模塊級(jí)(setup_module/teardown_module)開始于模塊始末,全局的
- 函數(shù)級(jí)(setup_function/teardown_function)只對(duì)函數(shù)用例生效(不在類中)
- 類級(jí)(setup_class/teardown_class)只在類中前后運(yùn)行一次(在類中)
- 方法級(jí)(setup_method/teardown_method)開始于方法始末(在類中)
- 類里面的(setup/teardown)運(yùn)行在調(diào)用方法的前后
pytest 還可以在函數(shù)前加@pytest.fixture()裝飾器,在測(cè)試用例中裝在fixture函數(shù).fixture的使用范圍可以是
@pytest.fixture(scope ='fuction')
@pytest.fixture(scope ='fuction')
fuction,module,class,session
firture 相對(duì)于setup 和teardown 來(lái)說(shuō)有一下幾點(diǎn)優(yōu)勢(shì):
命名方式靈活,不局限setup 和teardown 這幾個(gè)命名
contest.py 配置里可以實(shí)現(xiàn)數(shù)據(jù)共享,不需要import就能自動(dòng)找到一些配置,可以多個(gè)py文件調(diào)用
scope = "module" 可以實(shí)現(xiàn)多個(gè).py 跨文件共享前置
scope = "session"以實(shí)現(xiàn)多個(gè).py 跨文件使用一個(gè)session來(lái)完成多個(gè)用例
用yield 來(lái)喚醒teardown的執(zhí)行
三、 斷言
1.unittest 提供了 assertEqual\assertIn\assertTrue\assertFalse
2.pytest 直接使用了assert表達(dá)式
四 、 報(bào)告
1.unittest使用HTMLTestRunnerNew庫(kù)
2.pytest 有pytest-HTML\allure插件
五 失敗重跑
1.unittest無(wú)此功能
2.pytest 支持用例執(zhí)行失敗重跑,pytest-rerunfailures插件
六 參數(shù)化
- unittest 需依賴ddt庫(kù)
2.pytest 直接使用@pytest.mark.parametrize裝飾器
七 用例分類執(zhí)行
1.unittest默認(rèn)執(zhí)行全部用例,也可以通過(guò)加裝TestSuite,執(zhí)行部分用例
2.pytest 可以通過(guò)@pytest.mark 來(lái)標(biāo)記類和方法,pytes.main加入?yún)?shù)("-m")可以只運(yùn)行標(biāo)記的類和方法