七、fixture 的用例管理

努力的小测试發表於2024-06-25

1. 跳過用例 skip:

  當有部分測試用例還沒實現,但是又需要先執行整個模組進行除錯時,可以使用 skip 跳過指定的某些用例以達到測試透過的效果。

  @pytest.mark.skip(reason="指定跳過原因")

  def test_case():

    pass

  有條件跳過某些內容:

  @pytest.mark.skipif(sys.version_info[0:3] > (3, 8), reason="python版本高於3.8不執行")

  def test_case():

    pass

  *注意:skipif 中傳入的引數既可以是 bool 型別,也可以是 str 型別,如果是 bool 型別必須顯示宣告 reason 引數,否則報錯。如果是 str 型別可以不宣告 reason 引數。

2. 標記失敗 xfail:

  場景:執行 A 測試用例時,該用例執行失敗,如果 B 和 C 用例都是依賴於 A 用例,那麼可以直接跳過 B 和 C 用例的執行,直接給它標記為 xfail,這樣就節省用例執行時間。

  @pytest.mark.xfail(condition=False, reason="當前用例物件不存在")

  def test_case():

    pass

  condition=True 且測試用例斷言結果失敗,執行結果是 xfailed 狀態(x)
  condition=True 且測試用例斷言結果透過,執行結果是 xpassed 狀態

3. 重複執行 repeat:

  標記重複執行多次測試,目的:復現一些偶然性bug
  (1)第一種方式:
    @pytest.mark.repeat(count)
    def test_case():
      pass
  (2)第二種方式:
    使用 pytest-repeat 模組完成,pytest-repeat 是 pytest 的一個外掛,用於重複執行單個用例或多個用例
    指令:使用引數 --count 指定重複測試的次數。
      pytest --count=10 Test*.py
    
    pytest --count=100 -x Test*.py 執行 100 次,一旦發生故障就會停止
 

相關文章