テストマーカーの適用

Pythonによるテスト入門

Alexander Levin

Data Scientist

テストマーカーの概要

  • ユースケース 1: 条件を満たせばテストをスキップ
  • ユースケース 2: このテストは失敗する想定

  • テストマーカー: pytest のテストに付けるタグ(マーカー)

  • テストをタグ付けして動作を指定できる
Pythonによるテスト入門

マーカーの構文

  • デコレータ: 既存オブジェクトの構造を変えずに新機能を追加する Python のデザインパターン
  • テストマーカーの構文@pytest.mark デコレータで始まります:
import pytest

def get_length(string):
    return len(string)

# テストマーカーの構文
@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)

# skip マーカーの例
@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)

# skipif マーカーの例
@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))

# xfail マーカーの例
@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...