Pytest是一個(gè)非常成熟的全功能的Python測(cè)試框架拙寡,支持測(cè)試用例自動(dòng)檢索自動(dòng)庐橙、參數(shù)化、跳過(guò)怯伊、標(biāo)記預(yù)期等功能琳轿,且可以插件功能豐富多樣,與Python自帶的unittest測(cè)試框架類(lèi)似,但是比unittest框架使用 起來(lái)更簡(jiǎn)潔利赋,功能更強(qiáng)大!
pytest特點(diǎn)
1.簡(jiǎn)單靈活水评,容易上手,文檔豐富媚送,不像unittest用例編寫(xiě)規(guī)則那樣麻煩中燥,如導(dǎo)入unittest,繼承unittest.TestCase等
2.支持參數(shù)化塘偎,@pytest.mark.parametrize
3.支持用例分類(lèi)疗涉,可以細(xì)粒度地控制要測(cè)試的測(cè)試用例;@pytest.mark.標(biāo)簽名
4.用例的前置和后置更加靈活,pytest.fixture()
5.斷言簡(jiǎn)單吟秩,只有一個(gè)assert
6.能夠支持簡(jiǎn)單的單元測(cè)試和復(fù)雜的功能測(cè)試咱扣。
7.支持設(shè)置用例執(zhí)行順序pytest-ordering
8.支持用例跳過(guò),失敗重跑機(jī)制涵防。pytest-rerunfailures闹伪,flaky,tenacity
9.豐富的插件以及社區(qū)支持壮池,具有很多第三方插件偏瓤,并且可以自定義擴(kuò)展。
10.支持運(yùn)行由nose, unittest編寫(xiě)的測(cè)試case椰憋。
11.支持分布式厅克、多線(xiàn)程跑用例pytest-xdist
12.支持pytest-html報(bào)告、allure報(bào)告
13.可以很好的和CI工具結(jié)合橙依。
pytest搜索識(shí)別用例規(guī)則:
1.pytest 默認(rèn)會(huì)去查找當(dāng)前項(xiàng)目下所有的以 test 打頭的 py 文件test.py 的文件证舟,符合命名規(guī)則test.py 的文件
2.以 test 開(kāi)頭的函數(shù)名
3.以Test 開(kāi)頭的測(cè)試類(lèi)(沒(méi)有 init 函數(shù))當(dāng)中,以 test_ 開(kāi)頭的函數(shù)
pytest用例執(zhí)行順序:
1.文件名稱(chēng) 按 ASCII 碼排序
2.文件內(nèi)部按代碼先后順序排序
pytest的執(zhí)行方式
1.執(zhí)行目錄下所有用例
pytest/py.test
2.執(zhí)行某個(gè)python模塊
pytest 文件名.py
3.執(zhí)行某個(gè)模塊的某個(gè)類(lèi)
pytest 文件名.py::類(lèi)名
- 執(zhí)行某個(gè)模塊里面某個(gè)類(lèi)中的某個(gè)方法
pytest 文件名.py::類(lèi)名::方法名
- 跳過(guò)運(yùn)行某個(gè)用例
pytest -k “類(lèi)名 and not 方法名”
- 執(zhí)行特定標(biāo)記的用例
pytest -m [標(biāo)記名]