Pytest官方教程-22-API參考-Marks

目錄:

  1. 安裝及入門
  2. 使用和調用方法
  3. 原有TestSuite使用方法
  4. 斷言的編寫和報告
  5. Pytest fixtures:清晰 模塊化 易擴展
  6. 使用Marks標記測試用例
  7. Monkeypatching/對模塊和環境進行Mock
  8. 使用tmp目錄和文件
  9. 捕獲stdout及stderr輸出
  10. 捕獲警告信息
  11. 模塊及測試文件中集成doctest測試
  12. skip及xfail: 處理不能成功的測試用例
  13. Fixture方法及測試用例的參數化
  14. 緩存: 使用跨執行狀態
  15. unittest.TestCase支持
  16. 運行Nose用例
  17. 經典xUnit風格的setup/teardown
  18. 安裝和使用插件
  19. 插件編寫
  20. 編寫鉤子(hook)方法
  21. 運行日志
  22. API參考
    1. 方法(Functions)
    2. 標記(Marks)
    3. 鉤子(Hooks)
    4. 裝置(Fixtures)
    5. 對象(Objects)
    6. 特殊變量(Special Variables)
    7. 環境變量(Environment Variables)
    8. 配置選項(Configuration Options)
  23. 優質集成實踐
  24. 片狀測試
  25. Pytest導入機制及sys.path/PYTHONPATH
  26. 配置選項
  27. 示例及自定義技巧
  28. Bash自動補全設置

API參考-Marks

22-API參考-02-Marks

標記(Marks)

可以使用標記應用元數據來測試功能(但不是固定裝置),然后可以通過裝置或插件訪問。

pytest.mark.filterwarnings

教程@ pytest.mark.filterwarnings
為標記的測試項添加警告過濾器。

pytest.mark.``filterwarnings過濾器

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數: | 過濾器str) -
一個警告規范字符串,由Python文檔的“警告過濾器”部分中 指定的元組內容組成,由。分隔。可以省略可選字段。傳遞用于過濾的模塊名稱不是正則表達式轉義。(action, message,category, module, lineno)":"
例如:

@pytest.mark.warnings("ignore:.*usage will be deprecated.*:DeprecationWarning")
def test_foo():
    ...

|

pytest.mark.parametrize

教程參數化夾具和測試功能

Metafunc.``parametrizeargnamesargvaluesindirect = Falseids = None,*scope = None *)[source]

使用給定argnames的argvalues列表向基礎測試函數添加新調用。在收集階段執行參數化。如果你需要設置昂貴的資源,請參閱設置間接,以便在測試設置時進行。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數: |

  • argnames - 以逗號分隔的字符串,表示一個或多個參數名稱,或參數字符串的列表/元組。
  • argvalues - argvalues列表確定使用不同參數值調用測試的頻率。如果只指定了一個argname,則argvalues是值列表。如果指定了N個argnames,則argvalues必須是N元組的列表,其中每個tuple-element為其各自的argname指定一個值。
  • indirect - argnames或boolean的列表。參數列表名稱(argnames的子集)。如果為True,則列表包含argnames中的所有名稱。對應于此列表中的argname的每個argvalue將作為request.param傳遞到其各自的argname fixture函數,以便它可以在測試的設置階段而不是在收集時執行更昂貴的設置。
  • ids - 字符串ID列表或可調用的列表。如果字符串,則每個字符串對應于argvalues,以便它們是測試ID的一部分。如果將None作為特定測試的id給出,則將使用該參數的自動生成的id。如果是可調用的,它應該采用一個參數(單個argvalue)并返回一個字符串或返回None。如果為None,將使用該參數的自動生成的id。如果沒有提供id,它們將自動從argvalues生成。
  • 范圍 - 如果指定,則表示參數的范圍。范圍用于按參數實例對測試進行分組。它還將覆蓋任何fixture函數定義的范圍,允許使用測試上下文或配置設置動態范圍。
    |

pytest.mark.skip

教程跳過測試功能
無條件地跳過測試功能。

pytest.mark.``skip(**reason = None *)

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數: | reasonstr) - 跳過測試功能的原因。 |

pytest.mark.skipif

教程跳過測試功能
如果條件是,則跳過測試功能True

pytest.mark.``skipif條件,*原因=無

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數: |

pytest.mark.usefixtures

教程使用類,模塊或項目中的夾具
將測試功能標記為使用給定的夾具名稱。
警告
應用于夾具功能時,該標記無效。

pytest.mark.``usefixtures(*名稱

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數: | args - 要使用的fixture的名稱,作為字符串 |

pytest.mark.xfail

教程XFail:將測試功能標記為預期失敗
標記測試功能按預期失敗

pytest.mark.``xfailcondition = Nonereason = Noneraises = Nonerun = Truestrict = False *)

<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 參數: |

  • conditionboolstr) - 將測試函數標記為xfail(True/False條件字符串)的 條件
  • reasonstr) - 測試函數標記為xfail的原因。
  • 引發異常) - 期望由測試函數引發的異常子類; 其他例外將無法通過測試。
  • runbool) - 如果實際應該執行測試功能。如果False,該函數將始終為xfail并且不會被執行(如果函數是segfaulting則很有用)。
  • 嚴格布爾) -
    • 如果False(默認值),該功能將在終端輸出中顯示,就xfailed好像它失敗一樣,就像xpass它通過一樣。在這兩種情況下,這都不會導致測試套件整體失敗。這對于標記稍后要解決的片狀測試(隨機失敗的測試)特別有用。
    • 如果True,該函數將在終端輸出中顯示為xfailed失敗,但如果它意外通過則將使測試套件失敗。這對于標記始終失敗的函數特別有用,并且應該有明確的指示它們是否意外地開始通過(例如,庫的新版本修復了已知錯誤)。
      |

自定義標記

標記是使用工廠對象動態創建的,pytest.mark并作為裝飾器應用。
例如:

@pytest.mark.timeout(10, "slow", method="thread")
def test_function():
    ...

將創建并附加一個Mark對象到收集 Item,然后可以通過固定裝置或鉤子訪問Node.iter_markers。該mark對象將具有以下屬性:

mark.args == (10, "slow")
mark.kwargs == {"method": "thread"}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容