pytest基礎(chǔ)特性02

pytest框架的特點(diǎn)

1、比unittest 更靈活,容易上手

2、可與selenium、request、appium結(jié)合

3、可實(shí)現(xiàn)用例跳過,或失敗用例重試

4、可與allure生成美觀的測(cè)試報(bào)告

5、可與jenkins結(jié)合持續(xù)集成

6、有非常強(qiáng)大的插件,并運(yùn)用插件實(shí)現(xiàn)很多的實(shí)用操作


一、pytest常用插件:

pytest -html? ? ? ? ? ? ? ? ? ? ?生成html格式的自動(dòng)化測(cè)試報(bào)告

pytest -xdist? ? ? ? ? ? ? ? ? ? ?測(cè)試用例分布式執(zhí)行,多cpu分發(fā)

pytest -ordering? ? ? ? ? ? ? ?用于改變測(cè)試用例的執(zhí)行順序

pytest -rerunfailures? ? ? ? 用例失敗重跑

allure -pytest? ? ? ? ? ? ? ? ? ? 用于生成美觀的測(cè)試報(bào)告

1)安裝:pip install pytest-html,生成測(cè)試報(bào)告(--html=report.html)

2)使用的插件放在requirements.txt 中,通過 pip install -r?requirements.txt

二、命令行模式

運(yùn)行所有:? ? pytest?

指定模塊:? ? pytest -vs test_login.py

指定目錄:? ? pytest -vs ./interface_testcase

指定文件:? ??pytest -vs ./interface_testcase/test_interface.py::test_04_func

指定用例關(guān)鍵詞:? ? pytest test_cal.py -vs -k 'div'? or 'add'? ? # 指定用例test_div,test_add

核心參數(shù):

1) -s: 顯示程序中的print/logging輸出

2) -v: 豐富信息模式, 輸出更詳細(xì)的用例執(zhí)行信息

3)-reruns=xxx,失敗重新運(yùn)行

4)--pytest -x? ? ? ? ? ?表示只要有一個(gè)用例錯(cuò)誤,那么測(cè)試停止

5)--pytest -vx? ./testcase -k "ao"? ? ?選擇部分執(zhí)行

6)--pytest --maxfail=3? 用例運(yùn)行時(shí) 允許的最大失敗次數(shù),超過則立即停止

7)--pytest? ?-m? ?標(biāo)記(marker)用于標(biāo)記測(cè)試并分組 :pytest -vv -m smoke

8)--lf / --last-failed? ?只執(zhí)行上次執(zhí)行失敗的測(cè)試

9) --pytest collect-only? ?只收集用例,不執(zhí)行

10) --pytest junitxml=path? 生成執(zhí)行結(jié)果xml文件

11) --pytest setup-show? ?回溯fixture的執(zhí)行過程

三、主函數(shù)

(1)運(yùn)行所有:pytest.main()

(2)?指定目錄:pytest.main(['-vs','./interface_testcase'])

(3)指定模塊:pytest.main(['-vs','test_login.py'])

(4)指定文件:通過nodeid指定用例運(yùn)行,nodeid由模塊名,分隔符,類名,方法名,函數(shù)名組成

pytest.main(['-s','./pytest-demo.py','-m','smoke'])

pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func'])

四、通過讀取pytest.ini配置文件運(yùn)行

pytest.ini? ?這個(gè)文件是pytest單元測(cè)試框架的核心配置文件

pytest.ini文件是pytest的主配置文件,可以改變pytest的運(yùn)行方式,它是一個(gè)固定的文件pytest.ini文件,讀取配置信息,按指定的方式去運(yùn)行。

pytest.ini的位置:一般放在項(xiàng)目工程的根目錄(即當(dāng)前項(xiàng)目的頂級(jí)文件夾下)

編碼格式:ASNI

作用:改變pytest默認(rèn)的行為

運(yùn)行的規(guī)則:不管是主函數(shù)的模式運(yùn)行,命令行運(yùn)行,都會(huì)去讀取這個(gè)

五、pytest 用例標(biāo)記mark

1)默認(rèn)是從上到下,改變默認(rèn)執(zhí)行順序,使用mark標(biāo)記

@pytest.mark.run(order=1)

2)mark實(shí)現(xiàn)參數(shù)化

@pytest.mark.parametrize("test_info", data)??

3)實(shí)現(xiàn)分組執(zhí)行

pytest.ini配置文件中增加分組參數(shù)markers來實(shí)現(xiàn)用例分組,如:

markers =

????g1:組一

????smoke:冒煙測(cè)試

函數(shù)中標(biāo)記 @pytest.mark.g1 、@pytest.mark.smoke

執(zhí)行時(shí)可按標(biāo)記單獨(dú)執(zhí)行

Skip使用場(chǎng)景和Xfail使用場(chǎng)景

@pytest.mark.skip 、 @pytest.mark.skipif? ??

不想運(yùn)行這個(gè)用例、標(biāo)記無法在某些平臺(tái)運(yùn)行的測(cè)試用例、某些版本執(zhí)行,其他版本跳過、當(dāng)前外部資源不可用時(shí)跳過

@pytest.mark.xfail

功能尚未實(shí)施或未修復(fù)的錯(cuò)誤,預(yù)計(jì)會(huì)失敗仍xpass,報(bào)告中體現(xiàn);測(cè)試某種情況就應(yīng)該失敗

六、pytest斷言

常用斷言:

assert xx 判斷 xx 為真

assert not xx 判斷 xx 不為真

assert a in b 判斷 b 包含?

aassert a==b 判斷 a 等于 b

assert a!=b 判斷 a 不等于 b

七、pytest跳過測(cè)試用例

(1)有條件跳過

@pytest.mark.skipif(age>=18,"已成年")? ?#skipif 有條件跳過

(2)無條件跳過

@pytest.mark.skip(reason="失敗")? ? ?#skip 無條件跳過

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容