pytest用例執(zhí)行順序和跳過(guò)執(zhí)行詳解
1.py文件的執(zhí)行順序
pytest默認(rèn)按字母順序去執(zhí)行的(小寫(xiě)英文--->大寫(xiě)英文--->0-9數(shù)字)
setup_module->setup_claas->setup_function->testcase->teardown_function->teardown_claas->teardown_module
1)文件之間按照ASCLL碼排序
2)文件內(nèi)默認(rèn)按照從上到下進(jìn)行執(zhí)行
文件內(nèi)的用例按照從上往下執(zhí)行。
2. 改變用例的執(zhí)行順序 -裝飾器@pytest.mark.run(order=x)
@pytest.mark.run(order=x) 需要pip install pytest-ordering
@pytest.mark.run(order=x) # x是整數(shù)(可以是正數(shù)也可以是負(fù)數(shù)) # 全為正數(shù)或負(fù)數(shù)時(shí),值越小,優(yōu)先級(jí)越高 # 既有正數(shù)又有負(fù)數(shù)時(shí),正數(shù)優(yōu)先級(jí)高(-1,2,-3的執(zhí)行順序是2,-3,-1) # 0是正整數(shù)中最小的,優(yōu)先級(jí)最高 @pytest.mark.run(order=0) # 兩個(gè)0是,就按照正常順序執(zhí)行
已經(jīng)改變了用例執(zhí)行規(guī)則,針對(duì)于是全局的,會(huì)先執(zhí)行完@pytest.mark.run(order=1)才會(huì)執(zhí)行order=2的用例
其實(shí)總體來(lái)說(shuō),這個(gè)插件的實(shí)用場(chǎng)景不是很多,如果需要指定某個(gè)用例第一個(gè)執(zhí)行和最后執(zhí)行,可以用該插件實(shí)現(xiàn)。
如果要按照你指定的順序執(zhí)行下去,需要在每個(gè)用例前都加上@pytest.mark.run(order=1),其中order中的數(shù)字需遞增。
| 方式一 | 方式二 | 方式三 |
第一個(gè)執(zhí)行 | :@ pytest.mark.first | :@ pytest.mark.run('first') | :@ pytest.mark.run(order=1) |
第二個(gè)執(zhí)行 | :@ pytest.mark.second | :@ pytest.mark.run('second') | :@ pytest.mark.run(order=2) |
倒數(shù)第二個(gè)執(zhí)行 | :@ pytest.mark.second_to_last | :@ pytest.mark.run('second_to_last') | :@ pytest.mark.run(order=-2) |
最后一個(gè)執(zhí)行 | :@pytest.mark.last | :@ pytest.mark.run('last') | :@ pytest.mark.run(order=-1) |
3. 分組執(zhí)行用例
在工作中有的時(shí)候我們并不需要執(zhí)行所有用例,所以就會(huì)用到分組執(zhí)行啦。
這里同樣也要用到裝飾器@pytest.mark
1)在pytest.ini中配置分組
[pytest] markers=g1 g2
這個(gè)設(shè)置的作用就是標(biāo)記用例進(jìn)行分組
2)測(cè)試用例加入標(biāo)記
3)運(yùn)行用例
需要輸入pytest -m '分組名'
4) 多個(gè)分組用例運(yùn)行需要用or進(jìn)行連接
5)運(yùn)行除標(biāo)記外的用例
pytest.main(['-vs', 'zmytest/test_order.py', '-m', "not g2 and not g1"])
4. pytest跳過(guò)測(cè)試用例
pytest.mark.skip:跳過(guò)用例執(zhí)行
跳過(guò)執(zhí)行,跳過(guò)分為有條件跳過(guò)和無(wú)條件跳過(guò)
1、無(wú)條件跳過(guò)
@pytest.mark.skip(reason="XXX")
2、有條件跳過(guò)
@pytest.mark.skipif(age>=18,reason='已成年')
1)無(wú)條件跳過(guò)
@pytest.mark.skip(reason="XXX") @pytest.mark.skip
2)有條件跳過(guò)
@pytest.mark.skipif(條件,reason='')這個(gè)方法就是當(dāng)滿足條件時(shí)跳過(guò)被標(biāo)記的用例,什么是被標(biāo)記?就是這個(gè)裝飾器下面的第一條用例
到此這篇關(guān)于pytest用例執(zhí)行順序和跳過(guò)執(zhí)行詳解的文章就介紹到這了,更多相關(guān)pytest用例執(zhí)行順序和跳過(guò)執(zhí)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)Python中的@classmethod用法詳解
下面小編就為大家分享一篇對(duì)Python中的@classmethod用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì)
這篇文章主要介紹了python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07在Python的while循環(huán)中使用else以及循環(huán)嵌套的用法
這篇文章主要介紹了在Python的while循環(huán)中使用else以及循環(huán)嵌套的用法,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽多窗口數(shù)據(jù)傳遞詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽多窗口數(shù)據(jù)傳遞詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03Python使用Selenium實(shí)現(xiàn)瀏覽器打印預(yù)覽功能
在Web開(kāi)發(fā)中,打印預(yù)覽是一個(gè)常見(jiàn)的功能需求,通過(guò)打印預(yù)覽,我們可以預(yù)覽和調(diào)整網(wǎng)頁(yè)的打印布局、樣式和內(nèi)容,Python的Selenium庫(kù)是一個(gè)強(qiáng)大的工具,可以自動(dòng)化瀏覽器操作,包括打印預(yù)覽,本文將介紹如何使用Python Selenium庫(kù)來(lái)實(shí)現(xiàn)瀏覽器的打印預(yù)覽功能2023-11-11六個(gè)Python3中使用最廣泛的內(nèi)置函數(shù)總結(jié)
這篇文章主要為大家詳細(xì)介紹了六個(gè)Python3中使用最廣泛的內(nèi)置函數(shù):Lamdba?函數(shù)、Map?函數(shù)、Filter?函數(shù)、Reduce?函數(shù)、Enumerate?函數(shù)和Zip?函數(shù),需要的可以參考一下2022-08-08anaconda?部署Jupyter?Notebook服務(wù)器過(guò)程詳解
這篇文章主要為大家介紹了anaconda?部署Jupyter?Notebook服務(wù)器過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09淺析python實(shí)現(xiàn)scrapy定時(shí)執(zhí)行爬蟲(chóng)
這篇文章主要介紹了淺析python實(shí)現(xiàn)scrapy定時(shí)執(zhí)行爬蟲(chóng)的相關(guān)資料,需要的朋友可以參考下2018-03-03