單元測試界的高富帥悼嫉,Pytest框架,用例標記和測試執(zhí)行怎么做

一暴区、pytest 中內(nèi)置的標記

pytest 標記使用需要通過 pytest.mark.標記 來使用仙粱,pytest 中為應對各種測試場景也內(nèi)置了很多的標記伐割。

1.1隔心、pytest.mark.parametrize:用例參數(shù)化的標記

通過 parametrize 可以將用例數(shù)據(jù)和用例執(zhí)行的邏輯代碼分離,并實現(xiàn)根據(jù)用例硬霍,自動生成測試用例唯卖。

Demo:

@pytest.mark.parametrize('item',[11,22,33,44,55,66])deftest_demo(item)assert item >50

1.2拜轨、pytest.mark.skip:跳過用例執(zhí)行

通過 skip 裝飾的用例允青,在執(zhí)行的時候會無條件跳過颠锉,

參數(shù) reason:跳過測試函數(shù)的原因。

Demo

# 不寫跳過原因@pytest.mark.skipdeftest_demo()assert item >50# 寫跳過原因@pytest.mark.skip(reason='不需要執(zhí)行')deftest_demo()assert item >50

1.3皆串、pytest.mark.skipif:根據(jù)條件跳過用例

skipif 可以根據(jù)條件來決定是否跳過用例的執(zhí)行, 如果條件為 True 則跳過測試函數(shù)執(zhí)行。

參數(shù) :condition —跳過的條件

參數(shù) :reason —跳過的原因

Demo

a =10@pytest.mark.skipif(a >20,reason='條件不成立谤牡,不執(zhí)行')deftest_demo()assert item >50

1.4翅萤、pytest.mark.xfail:標記預期失敗的用例

xfail 可以將測試函數(shù)標記為預期執(zhí)行失敗的用例腊满。

參數(shù) :condition — 將測試函數(shù)標記為 xfail 的條件(True/False )

參數(shù) :reason — 測試函數(shù)被標記為 xfail 的原因

參數(shù) :raises — 預期失敗的異常類型

參數(shù) :run — 是否應該實際執(zhí)行測試函數(shù)碳蛋。如果 False,該函數(shù)將始終 xfail 并且不會被執(zhí)行 肃弟。

參數(shù) :strict — 嚴格模式(True/False )

Demo

a =10@pytest.mark.xfail(a >20,reason='條件不成立笤受,不執(zhí)行'raises=AssertionError )deftest_demo()assert item >50

1.5箩兽、pytest.mark.usefixtures:給測試類或模塊設置測試夾具

usefixtures 標記一般用于給測試類下面的測試方法統(tǒng)一設置測試夾具汗贫。

Demo

# TestDome這個測試類的所有測試用例均執(zhí)行my_fixture這個夾具@pytest.mark.usefixtures('my_fixture這個夾具')classTestDome:# 函數(shù)用例 指定測試夾具deftest_02(self):? ? ? ? print('----測試用例:test_01------')# 函數(shù)用例 指定測試夾具deftest_03(self):? ? ? ? print('----測試用例:test_02------')

二芳绩、自定義標記

pytest 支持通過 pytest.ini 文件注冊自定義的標記。以滿足執(zhí)行用例時搪花,通過標記對用例進行篩選撮竿。幢踏,

2.1许师、注冊標記

pytest.ini 文件注冊標記的語法如下:

[pytest]markers =? ? 標記1標記2

2.2、標記函數(shù)

Demo:

# 用例前面加載標簽:@pytest.mark.標簽名? @pytest.mark.maindeftest_demo():pass

2.3搭幻、標記類

Demo:

# 方式一:直接類上面打標記@pytest.mark.mainclassTestClass(object):deftest_demo1(self):assert10>20# 方式二:通過類屬性pytestmark,可以同時添加多個標記classTestClass(object):pytestmark = [pytest.mark.main, pytest.mark.main]deftest_demo1(self):assert10>20

三檀蹋、通過標記篩選用例執(zhí)行

Demo:現(xiàn)有用例如下:

importpytest@pytest.mark.yuze@pytest.mark.musendeftest_01():print("用例一")deftest_02():print("用例二")@pytest.mark.musendeftest_03():print("用例三")@pytest.mark.musendeftest_04():print("用例四")@pytest.mark.yuzedeftest_05():print("用例五")@pytest.mark.yuzedeftest_06():print("用例六")

上面 Demo 中有 6 條測試用例俯逾,分別通過 pytest.mark.yuze 和 pytest.mark.musen 進行標記了贸桶,接下來我們一起來看看如何通過標記選擇用例執(zhí)行。

3.1桌肴、通過單個標記篩選

語法:pytest -m '標簽名'

Demo: pytest -m musen

執(zhí)行結果如下:

==========================testsessionstarts==========================platformwin32--Python3.7.3,pytest-5.4.2,py-1.8.0,pluggy-0.13.0rootdir:C:\project\,inifile:pytest.iniplugins:allure-pytest-2.8.15,Faker-8.11.0,metadata-1.9.0,parallel-0.0.8,repeat-0.8.0,rerunfailures-9.0,testreport-1.1.2collected6items/3deselected/3selectedtest_mode.py...[100%]==========================3passed,3deselectedin0.29s==========================

可以看到執(zhí)行結果執(zhí)行了 3 條用例皇筛,3 條未選中。

3.2识脆、同時選中多個標記

語法:pytest -m "標記 1 or 標記 2"

命令:pytest -m "musen ro yuze"

執(zhí)行通過 musen 或者 yuze 標記的的用例设联。執(zhí)行結果如下:

==========================testsessionstarts==========================platformwin32--Python3.7.3,pytest-5.4.2,py-1.8.0,pluggy-0.13.0rootdir:C:\project\,inifile:pytest.iniplugins:allure-pytest-2.8.15,Faker-8.11.0,metadata-1.9.0,parallel-0.0.8,repeat-0.8.0,rerunfailures-9.0,testreport-1.1.2collected6items/1deselected/5selectedtest_mode.py.....[100%]==========================5passed,1deselectedin0.29s==========================

從上述結果可以看到,只要加了 musen 或 yuze 這兩個標記中的任意一個

語法:pytest -m "標記 1 and 標記 2"

命令:pytest -m "musen and yuze"

執(zhí)行通過 musen 和 yuze 這兩個標記同時標記的用例灼捂。執(zhí)行結果如下

==========================testsessionstarts==========================platformwin32--Python3.7.3,pytest-5.4.2,py-1.8.0,pluggy-0.13.0rootdir:C:\project\,inifile:pytest.iniplugins:allure-pytest-2.8.15,Faker-8.11.0,metadata-1.9.0,parallel-0.0.8,repeat-0.8.0,rerunfailures-9.0,testreport-1.1.2collected6items/5deselected/1selectedtest_mode.py.[100%]==========================1passed,5deselectedin0.29s===================

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末离例,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子悉稠,更是在濱河造成了極大的恐慌宫蛆,老刑警劉巖的猛,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忿薇,居然都是意外死亡,警方通過查閱死者的電腦和手機筋栋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門肴颊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竟宋,你說我怎么就攤上這事∥献郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵滞乙,是天一觀的道長序调。 經(jīng)常有香客問我男韧,道長甚纲,這世上最難降的妖魔是什么鹃操? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任赴背,我火速辦了婚禮燃观,結果婚禮上,老公的妹妹穿的比我還像新娘脊框。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪护侮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天得哆,我揣著相機與錄音栋操,去河邊找鬼。 笑死戈锻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播璧微,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼屹电,長吁一口氣:“原來是場噩夢啊……” “哼外莲!你這毒婦竟也來了办龄?” 一聲冷哼從身側響起翔忽,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡环鲤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年瞭空,在試婚紗的時候發(fā)現(xiàn)自己被綠了旧找。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辅柴,到底是詐尸還是另有隱情股冗,我是刑警寧澤攒霹,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颤枪,已是汗流浹背霍骄。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工屈糊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愤惰。 傳聞我的和親對象是個殘疾皇子奠旺,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容