最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytest標(biāo)記的具體使用

 更新時(shí)間:2025年09月07日 09:56:37   作者:花花無(wú)缺  
pytest的標(biāo)記是一個(gè)非常強(qiáng)大和靈活的功能,允許你為測(cè)試用例“打標(biāo)簽”,從而實(shí)現(xiàn)分類(lèi)、控制執(zhí)行、修改行為等目的,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下

標(biāo)記通常搭配裝飾器使用

  • pytest標(biāo)記(Markers) 是一個(gè)非常強(qiáng)大和靈活的功能,允許你為測(cè)試用例“打標(biāo)簽”,從而實(shí)現(xiàn)分類(lèi)、控制執(zhí)行、修改行為等目的。
  • 可以使用 @pytest.mark.標(biāo)記名 來(lái)裝飾測(cè)試函數(shù)或測(cè)試類(lèi)。

1、內(nèi)置標(biāo)記(Built-in Marks)

pytest 提供了一些開(kāi)箱即用的內(nèi)置標(biāo)記:

標(biāo)記作用示例
@pytest.mark.skip(reason="...")無(wú)條件跳過(guò)該測(cè)試。@pytest.mark.skip(reason="臨時(shí)禁用")
@pytest.mark.skipif(condition, reason="...")條件跳過(guò)測(cè)試。@pytest.mark.skipif(sys.version_info < (3,8), reason="需要 Python 3.8+")
@pytest.mark.xfail(reason="...")預(yù)期該測(cè)試會(huì)失敗。如果失敗,結(jié)果為 XFAIL;如果意外通過(guò),結(jié)果為 XPASS。@pytest.mark.xfail(reason="已知缺陷")
@pytest.mark.parametrize參數(shù)化測(cè)試,用不同數(shù)據(jù)多次運(yùn)行同一測(cè)試。見(jiàn)下文示例
@pytest.mark.usefixtures('fixture_name')在測(cè)試中使用 fixture,但不將其作為參數(shù)傳入。@pytest.mark.usefixtures("db_cleaner")
@pytest.mark.filterwarnings為測(cè)試函數(shù)添加警告過(guò)濾器。@pytest.mark.filterwarnings("ignore::DeprecationWarning")

@pytest.mark.parametrize詳解

這是最常用的標(biāo)記之一,用于數(shù)據(jù)驅(qū)動(dòng)測(cè)試。數(shù)據(jù)驅(qū)動(dòng)測(cè)試 = 參數(shù)化測(cè)試+數(shù)據(jù)文件

基本語(yǔ)法

@pytest.mark.parametrize("參數(shù)名", [值1, 值2, ...])
def test_function(參數(shù)名):
    ...

示例

import pytest

# 測(cè)試平方函數(shù)
@pytest.mark.parametrize("input,expected", [
    (2, 4),
    (3, 9),
    (-2, 4),
    (0, 0),
])
def test_square(input, expected):
    assert input ** 2 == expected

# 測(cè)試不同瀏覽器(字符串參數(shù))
@pytest.mark.parametrize("browser", ["chrome", "firefox", "safari"])
def test_login(browser):
    print(f"Testing login with {browser}")
    # 啟動(dòng)對(duì)應(yīng)瀏覽器并測(cè)試登錄
    
-- 運(yùn)行結(jié)果會(huì)顯示為多個(gè)獨(dú)立的測(cè)試用例:

test_square[2-4] PASSED
test_square[3-9] PASSED
test_square[-2-4] PASSED
test_login[chrome] PASSED
test_login[firefox] PASSED

2、自定義標(biāo)記(Custom Marks)

可以創(chuàng)建自己的標(biāo)記來(lái)分類(lèi)測(cè)試,如 smoke, integration, e2e, slow 等。

2.1 在配置文件中聲明自定義標(biāo)記

如果不聲明,pytest 會(huì)發(fā)出警告(PytestUnknownMarkWarning)。

pyproject.toml 中聲明:

[tool.pytest.ini_options]
markers = [
    "smoke: 快速冒煙測(cè)試",
    "integration: 集成測(cè)試",
    "e2e: 端到端測(cè)試",
    "slow: 運(yùn)行時(shí)間較長(zhǎng)的測(cè)試",
    "db: 涉及數(shù)據(jù)庫(kù)操作",
    "performance: 性能測(cè)試"
]

或在 pytest.ini 中:

[tool:pytest]
markers =
    smoke: 快速冒煙測(cè)試
    integration: 集成測(cè)試
    slow: 運(yùn)行時(shí)間較長(zhǎng)的測(cè)試

2.2 使用自定義標(biāo)記

import pytest

@pytest.mark.smoke
def test_login():
    assert True

@pytest.mark.integration
@pytest.mark.db
class TestUserAPI:
    def test_create_user(self):
        assert True

    @pytest.mark.performance
    def test_user_list_speed(self):
        assert True

2.3 使用標(biāo)記來(lái)控制測(cè)試執(zhí)行

標(biāo)記的強(qiáng)大之處在于你可以選擇性地運(yùn)行或跳過(guò)測(cè)試。

命令作用
pytest -m "smoke"只運(yùn)行標(biāo)記為 smoke 的測(cè)試。
pytest -m "not smoke"運(yùn)行未標(biāo)記為 smoke 的測(cè)試。
pytest -m "integration and db"運(yùn)行同時(shí)標(biāo)記為 integration 和 db 的測(cè)試。
pytest -m "smoke or integration"運(yùn)行標(biāo)記為 smoke 或 integration 的測(cè)試。
pytest -m "not slow"跳過(guò)所有標(biāo)記為 slow 的測(cè)試(常用于CI快速反饋)。

3、內(nèi)置標(biāo)記和自定義標(biāo)記的區(qū)別

對(duì)比維度內(nèi)置標(biāo)記 (Built-in Marks)自定義標(biāo)記 (Custom Marks)
來(lái)源pytest 框架自帶的功能。由用戶(hù)自己定義的標(biāo)簽。
功能具有特定行為邏輯(如跳過(guò)、預(yù)期失敗、參數(shù)化)。默認(rèn)無(wú)行為,僅用于分類(lèi)和標(biāo)記,行為由執(zhí)行命令控制。
是否需要聲明? 不需要在配置文件中聲明。? 必須在 pyproject.toml 或 pytest.ini 中聲明,否則會(huì)警告。
用途控制測(cè)試的執(zhí)行行為。對(duì)測(cè)試進(jìn)行分類(lèi)、分組,便于選擇性執(zhí)行。
示例@pytest.mark.skip, @pytest.mark.parametrize@pytest.mark.smoke, @pytest.mark.e2e

4、類(lèi)標(biāo)記

  • 類(lèi)上的標(biāo)記會(huì)應(yīng)用到類(lèi)中所有的測(cè)試方法。
  • 可以在方法上添加額外的標(biāo)記。
@pytest.mark.db
class TestDatabase:
    def test_read(self):  # 有 db 標(biāo)記
        pass

    @pytest.mark.write
    def test_write(self):  # 有 db 和 write 兩個(gè)標(biāo)記
        pass

    @pytest.mark.skip
    def test_delete(self):  # 有 db 標(biāo)記,但會(huì)被跳過(guò)
        pass

5、查看所有已注冊(cè)的標(biāo)記

pytest --markers

輸出示例:

@pytest.mark.smoke - 快速冒煙測(cè)試
@pytest.mark.integration - 集成測(cè)試
@pytest.mark.slow - 運(yùn)行時(shí)間較長(zhǎng)的測(cè)試
@pytest.mark.skip - skip this test unconditionally
@pytest.mark.skipif - skip the given test if condition is True
...

6、實(shí)踐

  1. 為自定義標(biāo)記在配置文件中聲明,避免警告。
  2. 使用有意義的標(biāo)記名,如 smoke, e2e, ui, api
  3. 結(jié)合 CI/CD 使用:例如,在快速流水線(xiàn)中只運(yùn)行 smoke 測(cè)試,在完整流水線(xiàn)中運(yùn)行所有測(cè)試。
  4. 避免過(guò)度標(biāo)記:標(biāo)記太多會(huì)增加管理成本。
  5. 利用 parametrize + mark:可以為參數(shù)化測(cè)試的特定數(shù)據(jù)點(diǎn)打標(biāo)記。

總結(jié)

pytest 的標(biāo)記系統(tǒng)是其靈活性和可擴(kuò)展性的核心之一。通過(guò)標(biāo)記,可以:

  • 組織和分類(lèi)測(cè)試用例。
  • 控制執(zhí)行流程(跳過(guò)、預(yù)期失?。?。
  • 實(shí)現(xiàn)參數(shù)化測(cè)試
  • 集成到自動(dòng)化流程中(如只運(yùn)行冒煙測(cè)試)。

到此這篇關(guān)于pytest標(biāo)記的具體使用的文章就介紹到這了,更多相關(guān)pytest標(biāo)記內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python通過(guò)m3u8文件下載合并ts視頻的操作

    Python通過(guò)m3u8文件下載合并ts視頻的操作

    這篇文章主要介紹了Python通過(guò)m3u8文件下載合并ts視頻的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • python中id函數(shù)運(yùn)行方式

    python中id函數(shù)運(yùn)行方式

    在本篇文章里小編給大家分享了關(guān)于python中id函數(shù)運(yùn)行方式及相關(guān)實(shí)例,需要的朋友們可以參考下。
    2020-07-07
  • Mac下卸載PyCharm實(shí)現(xiàn)方法

    Mac下卸載PyCharm實(shí)現(xiàn)方法

    本文主要講解了Mac下PyCharm的卸載方法,包括刪除應(yīng)用程序文件、應(yīng)用支持文件、偏好設(shè)置數(shù)據(jù)、緩存數(shù)據(jù)、日志數(shù)據(jù)、設(shè)置文件、程序狀態(tài)文件和診斷及崩潰日志文件等步驟
    2026-05-05
  • 如何用python整理附件

    如何用python整理附件

    本篇文章給大家整理了關(guān)于如何用python整理附件的相關(guān)知識(shí)點(diǎn),學(xué)習(xí)python的朋友可以跟著測(cè)試下。
    2018-05-05
  • Python + Requests + Unittest接口自動(dòng)化測(cè)試實(shí)例分析

    Python + Requests + Unittest接口自動(dòng)化測(cè)試實(shí)例分析

    這篇文章主要介紹了Python + Requests + Unittest接口自動(dòng)化測(cè)試,結(jié)合具體實(shí)例形式分析了Python使用Requests與Unittest模塊實(shí)現(xiàn)接口自動(dòng)化測(cè)試相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • pycharm與cmd中制表符不一樣的問(wèn)題解決

    pycharm與cmd中制表符不一樣的問(wèn)題解決

    本文主要介紹了PyCharm和CMD中制表符寬度不同的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Python如何新建三維數(shù)組并賦值

    Python如何新建三維數(shù)組并賦值

    本文詳細(xì)介紹了如何使用Python和numpy庫(kù)建立三維數(shù)組并對(duì)其進(jìn)行賦值。首先,通過(guò)numpy創(chuàng)建一個(gè)3x3x3的三維數(shù)組,其次,將自定義的二維數(shù)組賦值到三維數(shù)組中。本文還解釋了相關(guān)參數(shù)的含義,使讀者能夠更好地理解和應(yīng)用到其他多維矩陣的操作中
    2024-09-09
  • Python socket實(shí)現(xiàn)的文件下載器功能示例

    Python socket實(shí)現(xiàn)的文件下載器功能示例

    這篇文章主要介紹了Python socket實(shí)現(xiàn)的文件下載器功能,結(jié)合實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)的文件下載器客戶(hù)端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 不同系統(tǒng)下python與pip的安裝及常見(jiàn)問(wèn)題詳解

    不同系統(tǒng)下python與pip的安裝及常見(jiàn)問(wèn)題詳解

    學(xué)習(xí)python的第一步,是安裝python,這篇文章主要是介紹,如何在不同的系統(tǒng)上安裝python,以及遇到的一些問(wèn)題,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Django中redis的使用方法(包括安裝、配置、啟動(dòng))

    Django中redis的使用方法(包括安裝、配置、啟動(dòng))

    下面小編就為大家分享一篇Django中redis的使用方法(包括安裝、配置、啟動(dòng)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02

最新評(píng)論

太和县| 金溪县| 潜江市| 专栏| 黄浦区| 巨野县| 苍溪县| 六盘水市| 印江| 锡林浩特市| 大渡口区| 理塘县| 班戈县| 荣昌县| 那坡县| 星子县| 十堰市| 五河县| 吕梁市| 凤庆县| 嘉黎县| 定远县| 石楼县| 日照市| 牟定县| 杭锦旗| 嘉鱼县| 城固县| 东乌珠穆沁旗| 万荣县| 上栗县| 惠水县| 云和县| 贵定县| 三河市| 揭阳市| 游戏| 三门县| 洞头县| 金昌市| 岳普湖县|