はじめに
本記事では、pytest
のデコレータである@pytest.mark.parametrize
について使い方を解説します。
この記事で挙げるポイント
@pytest.mark.parametrize
の使い方とメリット
この記事で挙げないポイント
pytest
の基本概念や説明pytest
を用いたassert
による単体テスト
関数をパラメータ化する
@pytest.mark.parametrize
の使い方を説明するため、下記のサンプルコードを見てみましょう。
import pytest def double(x: int) -> int: return x * 2 @pytest.mark.parametrize( "input, expected", [ (1, 2), (2, 4), (3, 6), ] ) def test_double(input, expected): assert double(input) == expected
コードのポイント解説
1.デコレータの構文について
@pytest.mark.parametrize()
の中で、テスト関数の引数として使う変数を指定。入力値と期待結果を列として指定。
2.メリットについて
- テスト用の関数を変更せず、デコレータで入力値と期待結果を一覧するので、了解がしやすい。
デコレータを使わない場合
以下のように記述します。
def double(x: int) -> int: return x * 2 def test_double(): assert double(1) == 2 assert double(2) == 4 assert double(3) == 6
比較
読みやすさ: デコレータを使う場合は入力値と期待結果がまとめられており、読みやすい。
拡張性: デコレータで入力値を増やしたい場合も定義した列を追加するだけで実現可能。
より詳細を知りたい方向けに
当ブログでもpytestについては、何度か取り上げていますので、気になる記事を参照してみてください。
pytest全体について理解を深めたい場合は、下記の技術書をオススメします。