1. 程式人生 > 其它 >Python測試框架pytest(14)用例執行後的幾種狀態

Python測試框架pytest(14)用例執行後的幾種狀態

用例執行完成後,每條用例都有自己的狀態。

常見的狀態:

  • 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"
    return
a 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