pytest -m
是 pytest 測試框架中的一個命令行選項,用于通過標(biāo)記(marker)來選擇性地運(yùn)行測試虏两。標(biāo)記是一種將特定的元數(shù)據(jù)與測試函數(shù)關(guān)聯(lián)起來的方式,可以用來對測試進(jìn)行分類世剖、分組或篩選定罢。
使用 -m
選項時,后面通常跟著一個表達(dá)式旁瘫,用于指定要運(yùn)行的測試的標(biāo)記祖凫。這個表達(dá)式可以是一個簡單的標(biāo)記名稱,也可以是一個更復(fù)雜的邏輯表達(dá)式酬凳。
下面是一些使用 pytest -m
的示例:
- 運(yùn)行帶有特定標(biāo)記的測試:
如果你有一些測試函數(shù)被標(biāo)記為 slow
惠况,你可以使用以下命令只運(yùn)行這些測試:
pytest -m slow
- 排除帶有特定標(biāo)記的測試:
如果你想運(yùn)行所有測試,但排除被標(biāo)記為 slow
的測試宁仔,你可以使用以下命令:
pytest -m "not slow"
- 組合多個標(biāo)記:
你可以使用邏輯運(yùn)算符(如 and
稠屠、or
和 not
)來組合多個標(biāo)記。例如台诗,如果你想運(yùn)行被標(biāo)記為 fast
或 critical
的測試完箩,你可以使用以下命令:
pytest -m "fast or critical"
- 使用自定義標(biāo)記:
你還可以定義自己的標(biāo)記,并在測試函數(shù)中使用它們拉队。例如弊知,你可以創(chuàng)建一個標(biāo)記 my_feature
,并使用它來標(biāo)記與特定功能相關(guān)的測試粱快。然后秩彤,你可以使用以下命令來運(yùn)行這些測試:
pytest -m my_feature
為了在測試函數(shù)中使用標(biāo)記叔扼,你可以使用 @pytest.mark
裝飾器。例如:
import pytest
@pytest.mark.slow
def test_slow_function():
# 這是一個被標(biāo)記為 'slow' 的測試函數(shù)
pass
@pytest.mark.fast
def test_fast_function():
# 這是一個被標(biāo)記為 'fast' 的測試函數(shù)
pass
在這個例子中漫雷,test_slow_function
被標(biāo)記為 slow
瓜富,而 test_fast_function
被標(biāo)記為 fast
。然后降盹,你可以使用 pytest -m
命令來選擇性地運(yùn)行這些測試与柑。