1. 程式人生 > 實用技巧 >pytest入門到放棄11--xfail處理無法成功的測試

pytest入門到放棄11--xfail處理無法成功的測試

xfail 原始碼如下:

    def xfail(self,condition=None, reason=None, raises=None, run=True, strict=False):
        """mark the the test function as an expected failure if eval(self,condition)
        has a True value.  # 將eval(self,condition)為真的測試函式標記為失敗。

        Optionally specify a reason for better reporting and run=False if
        you don't even want to execute the test function.  # 不想執行某個測試功能,可以指定 run=False,可以自定義錯誤原因 reason=‘’

        See http://doc.pytest.org/en/latest/skipping.html  # 官方文件說明
        
"""

xfail 作用:

  1)標記無法在某些平臺上執行或預期會失敗的測試功能,不在測試報告中顯示失敗(不顯示 F)

  2)當需要所有測試都通過時,可以使用 xfail

  3)xfail 使用pytest.mark.xfail 來標記預期會失敗的用例,用 x 標記代替 F,且無錯誤資訊輸出

  4)通過 -r 顯示 xfail、skip 詳細資訊   pytest -r

使用 xfail:

@pytest.mark.parametrize('a, b, c', [(4, 2, 2), (0, 2, 0), pytest.param(1, 0, 0, marks=pytest.mark.xfail
)
, (6, 8, 0)], ids=['整除', '被除數為0', '除數為0', '非整除']) def test_1(a, b, c): res = division(a, b) assert res == c

執行結果(用 x 標記了 F):

E:\personal\python38\python.exe E:/personal/GitWorkSpace/pytest_basic/main.py
test_demo_10.py::test_1[整除]
test_demo_10.py::test_1[被除數為0]
test_demo_10.py::test_1[除數為0]
test_demo_10.py::test_1[非整除]
..x.
3 passed, 1 xfailed in 0.14s