pytest 核心功能-用屬性標(biāo)記測(cè)試函數(shù)

2022-03-21 09:19 更新

通過(guò)使用 ?pytest.mark? 助手,您可以輕松地在測(cè)試函數(shù)上設(shè)置元數(shù)據(jù),或者,您可以使用 ?CLI - pytest --markers? 列出所有標(biāo)記,包括內(nèi)置標(biāo)記和自定義標(biāo)記。

以下是一些內(nèi)置標(biāo)記:

  • ?usefixtures?——在測(cè)試函數(shù)或類上使用fixture
  • ?filterwarnings?—過(guò)濾測(cè)試函數(shù)的某些警告
  • ?skip?—總是跳過(guò)一個(gè)測(cè)試函數(shù)
  • ?skipif?-如果滿足某個(gè)條件,則跳過(guò)某個(gè)測(cè)試函數(shù)
  • ?Xfail?——如果滿足某個(gè)條件,則產(chǎn)生一個(gè)“預(yù)期失敗”的結(jié)果
  • ?parametrize?——對(duì)同一個(gè)測(cè)試函數(shù)執(zhí)行多個(gè)調(diào)用

創(chuàng)建自定義標(biāo)記或?qū)?biāo)記應(yīng)用于整個(gè)測(cè)試類或模塊很容易。 這些標(biāo)記可以被插件使用,并且通常用于在命令行上使用 ?-m? 選項(xiàng)選擇測(cè)試。

標(biāo)記只能應(yīng)用于測(cè)試,對(duì)?fixture?沒(méi)有影響。

注冊(cè)標(biāo)記

您可以像這樣在 ?pytest.ini? 文件中注冊(cè)自定義標(biāo)記:

[pytest]
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    serial

或在您的 ?pyproject.toml? 文件中,如下所示:

[tool.pytest.ini_options]
markers = [
    "slow: marks tests as slow (deselect with '-m \"not slow\"')",
    "serial",
]

請(qǐng)注意,標(biāo)記名稱后 : 之后的所有內(nèi)容都是可選描述。

或者,您可以在 ?pytest_configure? 鉤子中以編程方式注冊(cè)新標(biāo)記:

def pytest_configure(config):
    config.addinivalue_line(
        "markers", "env(name): mark test to run only on named environment"
    )

注冊(cè)的標(biāo)記出現(xiàn)在pytest的幫助文本中,不會(huì)發(fā)出警告。建議第三方插件總是注冊(cè)它們的標(biāo)記。

在未知標(biāo)記上引發(fā)錯(cuò)誤

使用 ?@pytest.mark.name_of_the_mark? 裝飾器應(yīng)用的未注冊(cè)標(biāo)記將始終發(fā)出警告,以避免由于輸入錯(cuò)誤的名稱而默默地做一些令人驚訝的事情。 如上一節(jié)所述,您可以通過(guò)在 ?pytest.ini? 文件中注冊(cè)自定義標(biāo)記或使用自定義 ?pytest_configure? 鉤子來(lái)禁用自定義標(biāo)記的警告。

傳遞 ?--strict-markers? 命令行標(biāo)志時(shí),使用 ?@pytest.mark.name_of_the_mark? 裝飾器應(yīng)用的任何未知標(biāo)記都將觸發(fā)錯(cuò)誤。 您可以通過(guò)將 ?--strict-markers ?添加到 ?addopts ?來(lái)在項(xiàng)目中強(qiáng)制執(zhí)行此驗(yàn)證:

[pytest]
addopts = --strict-markers
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    serial


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)