pytest八 skip 跳過用例

2022-07-02 22:33:10 字數 3356 閱讀 9914

這是乙個快速指南,介紹如何在不同情況下跳過模組中的測試

1.無條件地跳過模組中的所有測試:

pytestmark = pytest.mark.skip("all tests still wip")

2.根據某些條件跳過模組中的所有測試

pytestmark = pytest.mark.skipif(sys.platform == "win32",

"tests for linux

˓→ only"

3.如果缺少某些匯入,則跳過模組中的所有測試

pexpect = pytest.importorskip("pexpect")

skip 跳過用例

pytest.mark.skip 可以標記無法在某些平台上執行的測試功能,或者您希望失敗的測試功能

skip 意味著叧有在滿足某些條件時才希望測試通過,否則 pytest應該跳過執行測試。 常見示例是在非 windows 平台上跳過僅限windows 的測試,或跳過測試依賴於當前不可用的外部資源(例如資料庫)。

xfail 意味著您希望測試由於某種原因而失敗。 乙個常見的例子是對功能的測試尚未實施,或尚未修復的錯誤。 當測試通過時儘管預計會失敗(標有 pytest.mark.xfail),它是乙個 xpass,將在測試摘要中報告。

pytest 計數並分別列出 skip 和 xfail 測試。 未顯示有關跳過/

xfailed 測試的詳細資訊預設情況下,以避免混亂輸出。 您可以使用-r選頃檢視不「short」字母對應的詳細資訊顯示在測試進度中

> pytest -rxxs # show extra info on xfailed, xpassed, and skipped tests

有關-r 選項的更多詳細資訊,請執行 pytest -hskip

跳過測試函式的最簡單方法是使用跳過裝飾器標記它,可以傳遞乙個可選的原因

@pytest.mark.skip(reason="no way of currently testing this")

def test_the_unknown():

...或者,也可以通過呼叫來在測試執行或設定期間強制跳過pytest.skip(reason)功能:

def test_function():

if not valid_config():

pytest.skip("unsupported configuration")

也可以使用 pytest.skip(reason,allow_module_level = true)跳過整個模組級別:

import pytest

if not pytest.config.getoption("--custom-flag"):

pytest.skip("--custom-flag is missing, skipping tests", allow_module_level=true)

當在匯入時間內無法評估跳過條件時,命令性方法很有用。

skipif

如果您希望有條件地跳過某些內容,則可以使用 skipif 代替。 這是標記測試的示例在 python3.6 之前的直譯器上執行時要跳過的函式

...如果條件在收集期間評估為 true,則將跳過測試函式,具有指定的原因使用-rs 時出現在摘要中。

import mymodule

minversion = pytest.mark.skipif(mymodule.__versioninfo__ <

(1,1),

reason="at least mymodule-1.1 required")

@minversion

def test_function():

...您可以在模組之間共享 skipif 標記。參考以下案例

from test_mymodule import minversion

@minversion

def test_anotherfunction():

...您可以匯入標記並在另乙個測試模組中重複使用它:

對於較大的測試套件,通常最好有乙個檔案來定義標記,然後一致適用於整個測試套件。

或者,您可以使用條件字串而不是布林值,但它們之間不能輕易共享它們支援它們主要是出於向後相容的原因

skip 類或模組

您可以在類上使用 skipif 標記(與任何其他標記一樣):

如果條件為 true,則此標記將為該類的每個測試方法生成跳過結果

如果要跳過模組的所有測試功能,可以在全域性級別使用pytestmark名稱

pytestmark = pytest.mark.skipif(...)

如果將多個 skipif 裝飾器應用於測試函式,則如果任何跳過條件為真,則將跳過它

skip 檔案或目錄

有時您可能需要跳過整個檔案或目錄,例如,如果測試依賴於特定於 python 的版本功能或包含您不希望 pytest 執行的**。 在返種情況下,您必項排除檔案和目錄來自收藏。 有關更多資訊,請參閱自定義測試集合。

skip 缺少匯入依賴項

您可以在模組級別戒測試戒測試設定功能中使用以下幫助程式

docutils = pytest.importorskip("docutils")

如果無法在此處匯入 docutils,則會導致測試跳過結果。 你也可以跳過庫的版本號

docutils = pytest.importorskip("docutils",

minversion="0.3")

將從指定模組的屬性中讀取版本。

pytest文件12 skip跳過用例

pytest.mark.skip可以標記無法在某些平台上執行的測試功能,或者您希望失敗的測試功能 skip意味著只有在滿足某些條件時才希望測試通過,否則pytest應該跳過執行測試。常見示例是在非windows平台上跳過僅限windows的測試,或跳過測試依賴於當前不可用的外部資源 例如資料庫 xf...

pytest教程之skip執行時跳過用例

在實際的自動化測試過程中,我們會因為某些原因想跳過部分用例的執行,例如個別用例在某個環境中無法執行時。這時候使用pytest的skip功能可以跳過這些用例執行。下面看例子 import pytest import sys skipmark pytest.mark.skip reason 不能在sta...

pytest跳過執行skip和skipif

相關函式 pytest.mark.skip pytest.mark.skipif 可以看看原函式 staticmethod def skipif condition,reason none skip the given test function if eval condition results ...