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

pytest標記的具體使用

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

標記通常搭配裝飾器使用

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

1、內置標記(Built-in Marks)

pytest 提供了一些開箱即用的內置標記:

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

@pytest.mark.parametrize詳解

這是最常用的標記之一,用于數(shù)據(jù)驅動測試數(shù)據(jù)驅動測試 = 參數(shù)化測試+數(shù)據(jù)文件

基本語法

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

示例

import pytest

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

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

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

2、自定義標記(Custom Marks)

可以創(chuàng)建自己的標記來分類測試,如 smoke, integration, e2e, slow 等。

2.1 在配置文件中聲明自定義標記

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

pyproject.toml 中聲明:

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

或在 pytest.ini 中:

[tool:pytest]
markers =
    smoke: 快速冒煙測試
    integration: 集成測試
    slow: 運行時間較長的測試

2.2 使用自定義標記

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 使用標記來控制測試執(zhí)行

標記的強大之處在于你可以選擇性地運行或跳過測試。

命令作用
pytest -m "smoke"只運行標記為 smoke 的測試。
pytest -m "not smoke"運行未標記為 smoke 的測試。
pytest -m "integration and db"運行同時標記為 integration 和 db 的測試。
pytest -m "smoke or integration"運行標記為 smoke 或 integration 的測試。
pytest -m "not slow"跳過所有標記為 slow 的測試(常用于CI快速反饋)。

3、內置標記和自定義標記的區(qū)別

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

4、類標記

  • 類上的標記會應用到類中所有的測試方法。
  • 可以在方法上添加額外的標記。
@pytest.mark.db
class TestDatabase:
    def test_read(self):  # 有 db 標記
        pass

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

    @pytest.mark.skip
    def test_delete(self):  # 有 db 標記,但會被跳過
        pass

5、查看所有已注冊的標記

pytest --markers

輸出示例:

@pytest.mark.smoke - 快速冒煙測試
@pytest.mark.integration - 集成測試
@pytest.mark.slow - 運行時間較長的測試
@pytest.mark.skip - skip this test unconditionally
@pytest.mark.skipif - skip the given test if condition is True
...

6、實踐

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

總結

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

  • 組織和分類測試用例。
  • 控制執(zhí)行流程(跳過、預期失?。?/li>
  • 實現(xiàn)參數(shù)化測試。
  • 集成到自動化流程中(如只運行冒煙測試)。

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

相關文章

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

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

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

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

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

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

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

    如何用python整理附件

    本篇文章給大家整理了關于如何用python整理附件的相關知識點,學習python的朋友可以跟著測試下。
    2018-05-05
  • Python + Requests + Unittest接口自動化測試實例分析

    Python + Requests + Unittest接口自動化測試實例分析

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

    pycharm與cmd中制表符不一樣的問題解決

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

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

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

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

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

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

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

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

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

最新評論

德惠市| 海兴县| 阳朔县| 焉耆| 探索| 贞丰县| 广昌县| 三穗县| 安顺市| 乌拉特中旗| 滨州市| 台湾省| 全州县| 黄梅县| 于田县| 大新县| 彭山县| 赤水市| 枝江市| 镇宁| 宣城市| 肥西县| 双城市| 朔州市| 孙吴县| 达孜县| 乌恰县| 涿州市| 台南市| 日照市| 鸡东县| 扎赉特旗| 南陵县| 鲁甸县| 洮南市| 临夏县| 聂荣县| 丹东市| 镇康县| 卫辉市| 双江|