二.pytest默認的測試用例的規(guī)則以及基礎(chǔ)應(yīng)用

1. 命名規(guī)則

(1)模塊名必須以test_開頭或者_test結(jié)束
(2)測試類必須以Test開頭橄维,并且不能有init方法
(3)測試方法必須以test開頭

2. 運行方式

(1)主函數(shù)運行方式:
① 運行所有的測試用例:直接新建一個文件捂敌,執(zhí)行pytest.main()
② 運行指定模塊的測試用例:pytest.main(['-vs', 'test_login.py'])
③ 運行指定目錄的測試用例:pytest.main(['-vs', './test_demo'])
④ 通過nodeid運行指定的用例:nodeid由模塊名丈冬,分隔符,類名吓揪,方法名胆萧,函數(shù)名組成:
pytest.main(['-vs', './test_demo/test_login,py::test_login']) # 指定運行的函數(shù)名
pytest.main(['-vs', './test_demo/test_login,py::TestLogin::test_login'])# 指定運行的類函數(shù)名
(2)命令行運行模式
① 運行所有的模塊:直接在命令行中輸入pytest
② 運行指定模塊的測試用例:pytes -vs test_login.py
③ 運行指定目錄的測試用例:pytest -vs ./test_demo
④ 通過nodeid運行指定的用例:nodeid由模塊名纱意,分隔符,類名间景,方法名佃声,函數(shù)名組成:
pytest -vs /test_demo/test_login,py::test_login # 指定運行的函數(shù)名
pytest -vs ./test_demo/test_login,py::TestLogin::test_login # 指定運行的類函數(shù)名

(3)通過讀取pytest.ini配置文件運行
pytest.ini這個文件是pytest單元測試框架的核心配置文件

  1. 位置:一般放在項目的根目錄
  2. 編碼:必須是ANSI編碼
  3. 作用:改變pytest默認的行為,比如命名必須以test_開頭
  4. 運行的規(guī)則:不管是主函數(shù)的模式運行或者是命令行運行模式都會讀取這個文件
    文件樣式:
    [pytest]
    addopts = -vs # 命令行的參數(shù)倘要,用空格分割
    testpaths = ./testcase #測試用例的路徑
    python_files = test_.py # 模塊名的規(guī)則
    python_classes = Test
    # 類名的規(guī)則
    python_functions = test # 方法名的規(guī)則

常用運行參數(shù)解釋:
-s:表示輸出調(diào)試信息圾亏,包括print打印的信息
-v:顯示更詳細的信息
-vs:這兩個參數(shù)一起使用
-n:支持多線程或者分布式運行測試用例
如:pytest.main(['-vs', './test_demo/test_login,py::TestLogin::test_login', '-n=2']) # 使用-n指定兩個線程運行
--rerun Num:失敗用例重新運行幾次
如:pytest.main(['-vs', './test_demo/test_login,py::TestLogin::test_login', '--reruns=2'])
-x:表示只要一個測試用例報錯,那么測試停止
--maxfail NUM:表示最多出現(xiàn)NUM錯誤就停止運行
-k:根據(jù)測試用例的部分字符串指定測試用例碗誉,如pytest.main(['-vs', './test_demo/test_login,py::TestLogin::test_login', '-k="ao"]) # 表示只指定包含ao字符的用例函數(shù)
--html 文件名:生成html的測試報告

3. 測試用例的執(zhí)行順序
默認是從上到下順序執(zhí)行的召嘶,但是可以通過pytest.mark.run裝飾器修改測試用例函數(shù)的執(zhí)行順序
import pytest


class TestOrder(object):

    def test_order1(self):
        print('order1')

    def test_order2(self):
        print('order2')

    @pytest.mark.run(order=3)
    def test_order3(self):
        print('order3')

    @pytest.mark.run(order=1)
    def test_order4(self):
        print('order4')

    @pytest.mark.run(order=2)
    def test_order5(self):
        print('order5')
4. 分組執(zhí)行用例

當(dāng)我們有多個測試用例的class時,如果我們只想執(zhí)行其中的一個或幾個用例而不是全部執(zhí)行哮缺,那么可以使用分組執(zhí)行用例
(1)使用pytest.mark.xxx標(biāo)記指定函數(shù)的組名

import pytest


class TestOrder(object):
    @pytest.mark.qqq
    def test_order1(self):
        print('order1')

    @pytest.mark.www
    def test_order2(self):
        print('order2')

    @pytest.mark.run(order=3)
    @pytest.mark.www
    def test_order3(self):
        print('order3')

    @pytest.mark.run(order=1)
    @pytest.mark.www
    def test_order4(self):
        print('order4')

    @pytest.mark.run(order=2)
    @pytest.mark.www
    def test_order5(self):
        print('order5')

(2)運行pytest中添加marker=xxx的組名配置

[pytest]
addopts = -vs
testpaths = ./testcase
python_files = test_*.py
python_classes = Test*
python_functions = test
markers =
    www
    qqq

(3)運行測試腳本時添加-m參數(shù)

import pytest


if __name__ == '__main__':
    pytest.main(['-vs', 'test_order.py', '-m=www or qqq'])
5. 跳過指定的用例

(1)無條件跳過指定的用例:使用skip裝飾器弄跌,reason參數(shù)可不填

@pytest.mark.skip(reason='xxx')

(2)有條件跳過指定的用例:使用ifskip裝飾器,第一個參數(shù)是條件尝苇,reason參數(shù)可不填

@pytest.mark.ifskip(age<18,reason='xxx')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铛只,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糠溜,更是在濱河造成了極大的恐慌淳玩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件非竿,死亡現(xiàn)場離奇詭異蜕着,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門承匣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓖乘,“玉大人,你說我怎么就攤上這事韧骗〖问悖” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵袍暴,是天一觀的道長些侍。 經(jīng)常有香客問我,道長政模,這世上最難降的妖魔是什么岗宣? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮览徒,結(jié)果婚禮上狈定,老公的妹妹穿的比我還像新娘。我一直安慰自己习蓬,他們只是感情好纽什,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躲叼,像睡著了一般芦缰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枫慷,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天让蕾,我揣著相機與錄音,去河邊找鬼或听。 笑死探孝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的誉裆。 我是一名探鬼主播顿颅,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼足丢!你這毒婦竟也來了粱腻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斩跌,失蹤者是張志新(化名)和其女友劉穎绍些,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耀鸦,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡柬批,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氮帐。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡锻霎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出揪漩,到底是詐尸還是另有隱情,我是刑警寧澤吏口,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布奄容,位于F島的核電站,受9級特大地震影響产徊,放射性物質(zhì)發(fā)生泄漏昂勒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一舟铜、第九天 我趴在偏房一處隱蔽的房頂上張望戈盈。 院中可真熱鬧,春花似錦谆刨、人聲如沸塘娶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刁岸。三九已至,卻和暖如春她我,著一層夾襖步出監(jiān)牢的瞬間虹曙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工番舆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酝碳,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓恨狈,卻偏偏與公主長得像疏哗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拴事,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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