Python測試框架pytest(14)用例執行後的幾種狀態
阿新 • • 發佈:2021-10-22
用例執行完成後,每條用例都有自己的狀態。
常見的狀態:
-
PASSED:測試通過
-
FAILED:斷言失敗
-
ERROR:用例本身寫的質量不行,本身程式碼報錯(例如:fixture 不存在,fixture 裡面有報錯)
-
XFAIL:預期失敗,加了 @pytest.mark.xfail()
1、PASSED
1、建立test_passed.py檔案
指令碼程式碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 微信公眾號:AllTests軟體測試 """ def abc(): a = "123456" returna def test_case(): assert abc() == "123456"
2、執行結果:
測試通過
2、FAILED
示例一:
1、建立test_failed.py檔案
指令碼程式碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 微信公眾號:AllTests軟體測試 """ def abc(): a = "123456" return a def test_case(): assert abc() == "12345"
2、執行結果:
test_case測試用例呼叫abc函式的返回值進行斷言,斷言失敗。
示例二:
1、建立test_failed2.py檔案
指令碼程式碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 微信公眾號:AllTests軟體測試 """ def abc(): a = "123456" return a def test_case(): raise NameError assert abc() == "123456"
2、執行結果:
test_case用例執行時丟擲異常。
3、ERROR
示例一:
1、建立test_error.py檔案
指令碼程式碼:
#!/usr/bin/env python# -*- coding: utf-8 -*- """ 微信公眾號:AllTests軟體測試 """ import pytest @pytest.fixture() def abc(): print("獲取使用者名稱") a = "AllTests" assert a == "AllTests" return a def test_case(abcd): assert abc == "AllTests"
2、執行結果:
test_case函式引用不存在的fixture(abcd)
示例二:
1、建立test_error2.py檔案
指令碼程式碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 微信公眾號:AllTests軟體測試 """ import pytest @pytest.fixture() def abc(): print("獲取使用者名稱") a = "AllTests" assert a == "All-Tests" return a def test_case(abc): assert abc == "AllTests"
2、執行結果:
fixture裡面斷言失敗,所以fixture會報錯。
test_case函式呼叫了錯誤的fixture,所以ERROR表示用例有問題。
4、XFAIL
1、建立test_xfail.py檔案
指令碼程式碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 微信公眾號:AllTests軟體測試 """ import pytest # 斷言裝飾器 @pytest.mark.xfail(raises=ZeroDivisionError) def test_f(): 1 / 0
2、執行結果:
程式碼有異常,且和raised的異常類匹配,所以是XFAIL(算測試通過的一種,表示符合期望捕捉到的異常),並不算FAILED
如果和raised的異常類不匹配,則是FAILED
本文來自部落格園,作者:AllTests軟體測試,轉載請註明原文連結:https://www.cnblogs.com/alltests/p/15439905.html