詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹
mark標(biāo)記
在實(shí)際工作中,我們要寫的自動(dòng)化用例會(huì)比較多,也不會(huì)都放在一個(gè)py文件中,如果有幾十個(gè)py文件,上百個(gè)方法,而我們只想運(yùn)行當(dāng)中部分的用例時(shí)怎么辦?
pytest提供了一個(gè)非常好用的mark功能,可以給測(cè)試用例打上各種各樣的標(biāo)簽,運(yùn)行用例時(shí)可以指定運(yùn)行某個(gè)標(biāo)簽。mark功能作用就是靈活的管理和運(yùn)行測(cè)試用例。
標(biāo)簽既可以打到方法上,也可以打到類上,標(biāo)記的兩種方式:
- 直接標(biāo)記類或方法或函數(shù):
@pytest.mark.標(biāo)簽名
- 類屬性:
pytestmark = [pytest.mark.標(biāo)簽名, pytest.mark.標(biāo)簽名]
,需要注意的是屬性名稱是固定的
import pytest @pytest.mark.beta # 可以給類打標(biāo)簽 class TestLogin: # 標(biāo)記類 @pytest.mark.qc @pytest.mark.beta # 也可以多個(gè)標(biāo)簽 def test_login(self): # 標(biāo)記方法 pass @pytest.mark.smoke # 單個(gè)標(biāo)簽 def test_register(): # 標(biāo)記函數(shù) pass class TestClass: # 加一個(gè) pytestmark的類屬性 pytestmark = [pytest.mark.qc, pytest.mark.beta] # 標(biāo)簽存放在一個(gè)列表 pytest.main()
注冊(cè)標(biāo)簽名
我們要想運(yùn)行已經(jīng)打好標(biāo)記的函數(shù),還需要對(duì)標(biāo)簽名進(jìn)行注冊(cè),告訴pytest有哪些標(biāo)簽,如果不進(jìn)行注冊(cè)運(yùn)行時(shí)(pytest的高級(jí)版本)可能會(huì)報(bào)警告讓你進(jìn)行注冊(cè)。
我們只需要在項(xiàng)目根目錄下創(chuàng)建一個(gè)pytest.ini文件,注意文件名是不可修改的,否則pytest會(huì)找不到。內(nèi)容格式如下:
# pytest.ini # 只能修改=右邊的值 [pytest] python_files = demo_*.py # 模塊名以demo_開頭 python_functions = demo_* # 方法名以demo_開頭 python_classes = Demo* # 類名名以Demo開頭 # 注冊(cè)標(biāo)簽 markers = qc beta smoke
運(yùn)行指定的標(biāo)簽
通過(guò)命令行執(zhí)行
單個(gè)標(biāo)簽:pytest -m "標(biāo)簽名"
(-m意思是執(zhí)行標(biāo)簽mark),不想執(zhí)行某個(gè)標(biāo)簽可以用not來(lái)取反,即pytest -m "not 標(biāo)簽名"
多個(gè)標(biāo)簽:可以加上判斷,pytest -m "qc and beta"
或者 pytest -m "qc or beta"
效果是一樣的
注意:標(biāo)簽名一定要加雙引號(hào),單引號(hào)是會(huì)報(bào)錯(cuò)的。
通過(guò)代碼執(zhí)行
這里普及一下,main()方法是可以接收不定長(zhǎng)參數(shù)的,因此可以把要執(zhí)行的命令放在一個(gè)列表中
if __name__ == '__main__': pytest.main(['-m qc and beta', '-s']) # 標(biāo)簽名不需要加引號(hào)
關(guān)于pytest的指令,可以通過(guò)控制臺(tái)執(zhí)行pytest --help
查看,上面舉例中-s
命令是指打印更加詳細(xì)的信息,如果程序運(yùn)行過(guò)程當(dāng)中的print()
信息打印不出來(lái),可以加上-s
可選參數(shù),它是-- capture=no的縮寫。
skip跳過(guò)標(biāo)記
在維護(hù)測(cè)試用例的過(guò)程中,可能在一個(gè)階段某些用例已經(jīng)不需要了,或者在指定條件下是不需要運(yùn)行的,那么我們就可以通過(guò)mark.skip
跳過(guò)這些函數(shù)或者類,兩種跳過(guò)方式:
- 直接跳過(guò):
@pytest.mark.skip(reason = “原因”)
,這里原因是可選參數(shù) - 條件跳過(guò),即滿足某個(gè)條件才跳過(guò):
@pytest.mark.skipif(a == 1, reason = “原因”)
db_host = 'localhost' @pytest.mark.skip("和現(xiàn)在的需求不符合") # 不滿足當(dāng)下了,或別人編寫的暫時(shí)不能刪的 def test_yuz(self): pass @pytest.mark.skipif(db_host == 'localhost', reason='只測(cè)試線上環(huán)境,不測(cè)試本地環(huán)境') def test_develop_env(self): pass
到此這篇關(guān)于詳解pytest實(shí)現(xiàn)mark標(biāo)記功能詳細(xì)介紹的文章就介紹到這了,更多相關(guān)pytest mark標(biāo)記 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Pytest使用logging模塊寫日志的實(shí)例詳解
- pytest測(cè)試框架+allure超詳細(xì)教程
- pytest官方文檔解讀之安裝和使用插件的方法
- pytest使用@pytest.mark.parametrize()實(shí)現(xiàn)參數(shù)化的示例代碼
- Pytest執(zhí)行unittest TestSuite(測(cè)試套件)的實(shí)現(xiàn)方法
- python單測(cè)框架之pytest常見用法
- 詳解Pytest測(cè)試用例的執(zhí)行方法
- Python pytest裝飾器總結(jié)(實(shí)例詳解)
- pytest-sugar?執(zhí)行過(guò)程中顯示進(jìn)度條的腳本分享
相關(guān)文章
一文向您詳細(xì)介紹指令 python -m pip install的用法和功能
通過(guò)本文的介紹,我們?cè)敿?xì)了解了python -m pip install命令的用法和功能,從基本用法到安裝特定版本的包、從其他源安裝包、升級(jí)和卸載包,再到使用requirements.txt管理依賴,我們逐步深入了解了pip的強(qiáng)大功能,感興趣的朋友跟隨小編一起看看吧2024-07-07python實(shí)現(xiàn)月食效果實(shí)例代碼
在本文里小編給大家整理了關(guān)于python實(shí)現(xiàn)月食效果的相關(guān)實(shí)例內(nèi)容以及對(duì)應(yīng)代碼,有興趣的朋友們學(xué)習(xí)下。2019-06-06django admin.py 外鍵,反向查詢的實(shí)例
今天小編就為大家分享一篇django admin.py 外鍵,反向查詢的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Pytorch搭建YoloV5目標(biāo)檢測(cè)平臺(tái)實(shí)現(xiàn)過(guò)程
這篇文章主要為大家介紹了Pytorch搭建YoloV5目標(biāo)檢測(cè)平臺(tái)實(shí)現(xiàn)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04Python接口自動(dòng)化測(cè)試框架運(yùn)行原理及流程
這篇文章主要介紹了Python接口自動(dòng)化測(cè)試框架運(yùn)行原理及流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Python實(shí)現(xiàn)網(wǎng)絡(luò)通信的HTTP請(qǐng)求Socket編程Web爬蟲方法探索
隨著互聯(lián)網(wǎng)的不斷發(fā)展,Python作為一門多用途的編程語(yǔ)言,提供了強(qiáng)大的工具和庫(kù)來(lái)進(jìn)行網(wǎng)絡(luò)連接和通信,本文將深入探討Python中連接網(wǎng)絡(luò)的方法,包括HTTP請(qǐng)求、Socket編程、Web爬蟲和REST?API的使用2024-01-013個(gè)用于數(shù)據(jù)科學(xué)的頂級(jí)Python庫(kù)
今天小編就為大家分享一篇關(guān)于3個(gè)用于數(shù)據(jù)科學(xué)的頂級(jí)Python庫(kù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-09-09python利用跳板機(jī)ssh遠(yuǎn)程連接redis的方法
今天小編就為大家分享一篇python利用跳板機(jī)ssh遠(yuǎn)程連接redis的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02