目錄:
- 安裝及入門
- 使用和調(diào)用方法
- 原有TestSuite使用方法
- 斷言的編寫和報(bào)告
- Pytest fixtures:清晰 模塊化 易擴(kuò)展
- 使用Marks標(biāo)記測(cè)試用例
- Monkeypatching/對(duì)模塊和環(huán)境進(jìn)行Mock
- 使用tmp目錄和文件
- 捕獲stdout及stderr輸出
- 捕獲警告信息
- 模塊及測(cè)試文件中集成doctest測(cè)試
- skip及xfail: 處理不能成功的測(cè)試用例
- Fixture方法及測(cè)試用例的參數(shù)化
- 緩存: 使用跨執(zhí)行狀態(tài)
- unittest.TestCase支持
- 運(yùn)行Nose用例
- 經(jīng)典xUnit風(fēng)格的setup/teardown
- 安裝和使用插件
- 插件編寫
- 編寫鉤子(hook)方法
- 運(yùn)行日志
- API參考
- 優(yōu)質(zhì)集成實(shí)踐
- 片狀測(cè)試
- Pytest導(dǎo)入機(jī)制及sys.path/PYTHONPATH
- 配置選項(xiàng)
- 示例及自定義技巧
- Bash自動(dòng)補(bǔ)全設(shè)置
API參考-Marks
22-API參考-02-Marks
標(biāo)記(Marks)
可以使用標(biāo)記應(yīng)用元數(shù)據(jù)來測(cè)試功能(但不是固定裝置),然后可以通過裝置或插件訪問。
pytest.mark.filterwarnings
教程:@ pytest.mark.filterwarnings。
為標(biāo)記的測(cè)試項(xiàng)添加警告過濾器。
pytest.mark.``filterwarnings(過濾器)
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | 過濾器(str) -
一個(gè)警告規(guī)范字符串,由Python文檔的“警告過濾器”部分中 指定的元組內(nèi)容組成,由。分隔??梢允÷钥蛇x字段。傳遞用于過濾的模塊名稱不是正則表達(dá)式轉(zhuǎn)義。(action, message,category, module, lineno)":"
例如:
@pytest.mark.warnings("ignore:.*usage will be deprecated.*:DeprecationWarning")
def test_foo():
...
|
pytest.mark.parametrize
Metafunc.``parametrize(argnames,argvalues,indirect = False,ids = None,*scope = None *)[source]
使用給定argnames的argvalues列表向基礎(chǔ)測(cè)試函數(shù)添加新調(diào)用。在收集階段執(zhí)行參數(shù)化。如果你需要設(shè)置昂貴的資源,請(qǐng)參閱設(shè)置間接,以便在測(cè)試設(shè)置時(shí)進(jìn)行。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |
- argnames - 以逗號(hào)分隔的字符串,表示一個(gè)或多個(gè)參數(shù)名稱,或參數(shù)字符串的列表/元組。
- argvalues - argvalues列表確定使用不同參數(shù)值調(diào)用測(cè)試的頻率。如果只指定了一個(gè)argname,則argvalues是值列表。如果指定了N個(gè)argnames,則argvalues必須是N元組的列表,其中每個(gè)tuple-element為其各自的argname指定一個(gè)值。
- indirect - argnames或boolean的列表。參數(shù)列表名稱(argnames的子集)。如果為True,則列表包含argnames中的所有名稱。對(duì)應(yīng)于此列表中的argname的每個(gè)argvalue將作為request.param傳遞到其各自的argname fixture函數(shù),以便它可以在測(cè)試的設(shè)置階段而不是在收集時(shí)執(zhí)行更昂貴的設(shè)置。
- ids - 字符串ID列表或可調(diào)用的列表。如果字符串,則每個(gè)字符串對(duì)應(yīng)于argvalues,以便它們是測(cè)試ID的一部分。如果將None作為特定測(cè)試的id給出,則將使用該參數(shù)的自動(dòng)生成的id。如果是可調(diào)用的,它應(yīng)該采用一個(gè)參數(shù)(單個(gè)argvalue)并返回一個(gè)字符串或返回None。如果為None,將使用該參數(shù)的自動(dòng)生成的id。如果沒有提供id,它們將自動(dòng)從argvalues生成。
-
范圍 - 如果指定,則表示參數(shù)的范圍。范圍用于按參數(shù)實(shí)例對(duì)測(cè)試進(jìn)行分組。它還將覆蓋任何fixture函數(shù)定義的范圍,允許使用測(cè)試上下文或配置設(shè)置動(dòng)態(tài)范圍。
|
pytest.mark.skip
教程:跳過測(cè)試功能。
無條件地跳過測(cè)試功能。
pytest.mark.``skip(**,reason = None *)
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | reason(str) - 跳過測(cè)試功能的原因。 |
pytest.mark.skipif
教程:跳過測(cè)試功能。
如果條件是,則跳過測(cè)試功能True。
pytest.mark.``skipif(條件,*,原因=無)
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |
pytest.mark.usefixtures
教程:使用類,模塊或項(xiàng)目中的夾具。
將測(cè)試功能標(biāo)記為使用給定的夾具名稱。
警告
應(yīng)用于夾具功能時(shí),該標(biāo)記無效。
pytest.mark.``usefixtures(*名稱)
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): | args - 要使用的fixture的名稱,作為字符串 |
pytest.mark.xfail
教程:XFail:將測(cè)試功能標(biāo)記為預(yù)期失敗。
標(biāo)記測(cè)試功能按預(yù)期失敗。
pytest.mark.``xfail(condition = None,,reason = None,raises = None,run = True,strict = False *)
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數(shù): |
-
condition(bool或str) - 將測(cè)試函數(shù)標(biāo)記為xfail(
True/False或條件字符串)的 條件。 - reason(str) - 測(cè)試函數(shù)標(biāo)記為xfail的原因。
- 引發(fā)(異常) - 期望由測(cè)試函數(shù)引發(fā)的異常子類; 其他例外將無法通過測(cè)試。
-
run(bool) - 如果實(shí)際應(yīng)該執(zhí)行測(cè)試功能。如果
False,該函數(shù)將始終為xfail并且不會(huì)被執(zhí)行(如果函數(shù)是segfaulting則很有用)。 -
嚴(yán)格(布爾) -
- 如果
False(默認(rèn)值),該功能將在終端輸出中顯示,就xfailed好像它失敗一樣,就像xpass它通過一樣。在這兩種情況下,這都不會(huì)導(dǎo)致測(cè)試套件整體失敗。這對(duì)于標(biāo)記稍后要解決的片狀測(cè)試(隨機(jī)失敗的測(cè)試)特別有用。 - 如果
True,該函數(shù)將在終端輸出中顯示為xfailed失敗,但如果它意外通過則將使測(cè)試套件失敗。這對(duì)于標(biāo)記始終失敗的函數(shù)特別有用,并且應(yīng)該有明確的指示它們是否意外地開始通過(例如,庫的新版本修復(fù)了已知錯(cuò)誤)。
|
- 如果
自定義標(biāo)記
標(biāo)記是使用工廠對(duì)象動(dòng)態(tài)創(chuàng)建的,pytest.mark并作為裝飾器應(yīng)用。
例如:
@pytest.mark.timeout(10, "slow", method="thread")
def test_function():
...
將創(chuàng)建并附加一個(gè)Mark對(duì)象到收集 Item,然后可以通過固定裝置或鉤子訪問Node.iter_markers。該mark對(duì)象將具有以下屬性:
mark.args == (10, "slow")
mark.kwargs == {"method": "thread"}