套用測試標記

Python 測試入門

Alexander Levin

Data Scientist

測試標記總覽

  • 情境 1:若符合條件就略過測試
  • 情境 2:此測試預期會失敗

  • 測試標記(test marker)pytest 函式庫中用來標記測試的標籤

  • 透過標記為特定測試指定行為
Python 測試入門

標記語法

  • 裝飾器(Decorator)-Python 設計樣式,讓你在不改變物件結構下新增功能
  • 測試標記語法@pytest.mark 裝飾器開始:
import pytest

def get_length(string):
    return len(string)

# The test marker syntax
@pytest.mark.skip
def test_get_len():
    assert get_length('123') == 3
Python 測試入門

skip 與 skipif 標記

  • 使用 @pytest.mark.skip-在任何情況下都要略過該測試
  • 使用 @pytest.mark.skipif-當指定條件為 True 時略過測試
Python 測試入門

skip 標記範例

  • 使用 @pytest.mark.skip-要無限期略過某測試時。
import pytest
def get_length(string):
    return len(string)

# The skip marker example
@pytest.mark.skip
def test_get_len():
    assert get_length('123') == 3
Python 測試入門

skip 標記範例:輸出

  • 略過測試的輸出:

pytest.mark.skip 範例

Python 測試入門

skipif 標記範例

  • 使用 @pytest.mark.skipif-當給定條件為 True 時略過測試。
import pytest
def get_length(string):
    return len(string)

# The skipif marker example
@pytest.mark.skipif('2 * 2 == 5')
def test_get_len():
    assert get_length('abc') == 3
Python 測試入門

skipif 標記範例:輸出

  • 條件式略過測試的輸出:

pytest.mark.skipif 範例

Python 測試入門

xfail 標記

  • 使用 @pytest.mark.xfail-當你預期測試會失敗時
import pytest

def gen_sequence(n):
    return list(range(1, n+1))

# The xfail marker example
@pytest.mark.xfail
def test_gen_seq():
    assert gen_sequence(-1)
Python 測試入門

xfail 標記:輸出

  • 預期失敗測試的輸出:

pytest.mark.xfail 範例

Python 測試入門

重點整理

測試標記

  • pytest 函式庫中測試的屬性
  • 用於為特定測試指定行為
  • 語法以 @pytest.mark.name_of_the_marker 開頭
  • pytest 內建的標記:
    • @pytest.mark.xfail
    • @pytest.mark.skip
    • @pytest.mark.skipif
Python 測試入門

一起來練習吧!

Python 測試入門

Preparing Video For Download...