pytest常用插件推薦

之前用到的一些pytest插件丑罪,在這記錄一下纳本。

pytest-sugar

  • 作用:改變pytest執(zhí)行的默認(rèn)外觀您机。
  • 安裝:pip install pytest-sugar
$ pytest -v test_demo.py
Test session starts (platform: darwin, Python 3.7.3, pytest 4.5.0, pytest-sugar 0.9.2)
cachedir: .pytest_cache
rootdir: /Users/libo/Learn
plugins: sugar-0.9.2
collecting ...
 test_demo.py::test_one ?                                                                                                                                                                     33% ███▍
 test_demo.py::test_two ?                                                                                                                                                                     67% ██████▋
 test_demo.py::test_three ?                                                                                                                                                                  100% ██████████

Results (0.02s):
       3 passed

pytest-ordering

  • 作用:改變pytest默認(rèn)的執(zhí)行順序例嘱;
  • 安裝:pip install pytest-ordering
  • 用法:通過給用例添加@pytest.mark.run(order=x)裝飾器蒋得,例如:
import pytest

@pytest.mark.run(order=2)
def test_one():
    assert True

@pytest.mark.run(order=1)
def test_two():
    assert True

本來按順序執(zhí)行應(yīng)該是先執(zhí)行test_one然后再執(zhí)行test_two卵沉,但是加了@pytest.mark.run(order=1)之后用例的執(zhí)行順序變了:

$ pytest -v test_order.py
Test session starts (platform: darwin, Python 3.7.3, pytest 4.3.1, pytest-sugar 0.9.2)
cachedir: .pytest_cache
rootdir: /Users/libo/Learn, inifile:
plugins: sugar-0.9.2, ordering-0.6
collecting ...
 test_order.py::test_two ?                                                                                                                                                                    50% █████
 test_order.py::test_one ?                                                                                                                                                                   100% ██████████

Results (0.02s):
       2 passed

pytest-picked

  • 作用:依賴git颠锉,僅僅執(zhí)行你已經(jīng)修改但是還沒提交的測試用例;
  • 安裝:pip install pytest-picked
  • 用法:pytest --picked
$ git status

On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

  api.py
  tests/api/
  tests/test_board.py

nothing added to commit but untracked files present (use "git add" to track)

可以看到?jīng)]有執(zhí)行的為api.py, tests/api/, tests/test_board.py.
此時執(zhí)行pytest --picked:

$ pytest --picked

============================= test session starts =============================
platform darwin -- Python 3.6.4, pytest-3.6.0, py-1.5.3, pluggy-0.6.0
rootdir: /Users/ana.gomes/personal-workspace/grandma, inifile:
plugins: picked-0.1.0, mock-1.10.0, flask-0.10.0, deadfixtures-2.0.1
collecting 34 items
Changed test files... 1. ['tests/test_board.py']
Changed test folders... 1. ['tests/api/']
collected 34 items

tests/test_board.py .                                                      [ 50%]
tests/api/test_new.py .                                                    [100%]

=========================== 2 passed in 0.07 seconds ===========================

pytest-rerunfailures

  • 作用:重新運行失敗的測試用例史汗;
  • 安裝:pip install pytest-rerunfailures
  • 用法:
    pytest --reruns 5
    pytest --reruns 5 --reruns-delay 1 --reruns-delay指定重新運行的延遲
  • 指定單個用例:
@pytest.mark.flaky(reruns=5)
def test_example():
    import random
    assert random.choice([True, False])

pytest-xdist

  • 作用:并發(fā)執(zhí)行測試用例琼掠;
  • 安裝:pip install pytest-xdist
  • 用法:pytest -n NUM NUM表示執(zhí)行的CPU數(shù)量,也可以使用auto來自動識別系統(tǒng)的cpu數(shù)量并執(zhí)行停撞;
    如果一個用例失敗導(dǎo)致python解釋器crash掉瓷蛙,pytest-xdist會自動重啟該解釋器所在的worker并且正常報告錯誤,你可以使用--max-worker-restart選項來限制可以重新啟動的worker戈毒,或者使用--max-worker-restart=0完全禁用重新啟動艰猬。

pytest-parallel

  • 作用:使用多處理(并行)和多線程(并發(fā))快速運行測試;
  • pytest-xdist相比:
pytest-xdist
  1. 不是線程安全的埋市;
  2. 多線程時表現(xiàn)不佳冠桃;
  3. 需要state隔離;
pytest-parallel
  1. 線程安全的道宅;
  2. 可以對http請求使用非阻塞IO來使其具有高性能食听;
  3. 在Python環(huán)境中管理很少或沒有狀態(tài);
  • 安裝:pip install pytest-parallel
  • 執(zhí)行:
# runs 2 workers with 1 test per worker at a time
$ pytest --workers 2

# runs 4 workers (assuming a quad-core machine) with 1 test per worker
$ pytest --workers auto

# runs 1 worker with 4 tests at a time
$ pytest --tests-per-worker 4

# runs 1 worker with up to 50 tests at a time
$ pytest --tests-per-worker auto

# runs 2 workers with up to 50 tests per worker
$ pytest --workers 2 --tests-per-worker auto
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末污茵,一起剝皮案震驚了整個濱河市樱报,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泞当,老刑警劉巖迹蛤,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡笤受,警方通過查閱死者的電腦和手機穷缤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箩兽,“玉大人,你說我怎么就攤上這事章喉『蛊叮” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵秸脱,是天一觀的道長落包。 經(jīng)常有香客問我,道長摊唇,這世上最難降的妖魔是什么咐蝇? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮巷查,結(jié)果婚禮上有序,老公的妹妹穿的比我還像新娘。我一直安慰自己岛请,他們只是感情好旭寿,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著崇败,像睡著了一般盅称。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上后室,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天缩膝,我揣著相機與錄音,去河邊找鬼岸霹。 笑死疾层,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的松申。 我是一名探鬼主播云芦,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贸桶!你這毒婦竟也來了舅逸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤皇筛,失蹤者是張志新(化名)和其女友劉穎琉历,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡旗笔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年彪置,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇恶。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡拳魁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撮弧,到底是詐尸還是另有隱情潘懊,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布贿衍,位于F島的核電站授舟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贸辈。R本人自食惡果不足惜释树,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望擎淤。 院中可真熱鬧奢啥,春花似錦、人聲如沸揉燃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炊汤。三九已至正驻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抢腐,已是汗流浹背姑曙。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迈倍,地道東北人伤靠。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像啼染,于是被迫代替她去往敵國和親宴合。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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

  • 一迹鹅、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,750評論 0 10
  • pytest使用 1卦洽、pytest簡介 官檔是最好的教程 pytest是一個非常成熟的全功能的Python測試框架...
    道無虛閱讀 4,201評論 1 5
  • 1. 概述 pytest是一個非常成熟的全功能的Python測試框架,主要特點有以下幾點: 1斜棚、簡單靈活阀蒂,容易上手...
    紅薯愛帥閱讀 262,585評論 6 81
  • Pytest基礎(chǔ)使用 Pytest是一個易用该窗、強大、靈活的功能測試框架,并且兼容unittest和nose的測試用...
    韓志超閱讀 30,189評論 7 43
  • 目錄: 安裝及入門 使用和調(diào)用方法 原有TestSuite使用方法 斷言的編寫和報告 Pytest fixture...
    韓志超閱讀 5,394評論 0 5