Python で動的 (パラメーター化された) 単体テストを生成する方法
概要
テスト時複雑な関数の場合、わずかに異なる入力を使用して複数のテスト ケースを作成する必要があることがよくあります。各テスト ケースを手動で作成すると、面倒になり、エラーが発生しやすくなります。ここでパラメータ化されたテストが役に立ちます。
パラメータ化
パラメータ化を使用すると、単一のテスト ケースを定義し、それぞれに対してテストを実行するためのパラメータ値のリストを提供できます。パラメータのセット。このアプローチにより、テスト ケースの生成が自動化され、考えられるすべての入力が確実にテストされます。
pytest の Parametrizer を使用する
pytest は、テスト関数のパラメータ化。これは引数としてタプルまたは辞書のリストを受け取り、それぞれがパラメータ値のセットを表します。
import pytest test_data = [ ("foo", "a", "a"), ("bar", "a", "b"), ("lee", "b", "b"), ] @pytest.mark.parametrize("name, a, b", test_data) def test_sequence(name, a, b): assert a == b
このコードは、test_data のパラメータのセットごとに 1 つずつ、合計 3 つのテストを生成します。テスト名はパラメーター値に基づいて自動的に生成されます。
パラメーター化されたパッケージの使用
パラメーター化されたパッケージは、パラメーター化のためのより柔軟なインターフェイスを提供します。これにより、一連のテスト ケースを返すジェネレーター関数を定義できます。
from parameterized import parameterized test_data = [ ("foo", "a", "a"), ("bar", "a", "b"), ("lee", "b", "b"), ] @parameterized.expand(test_data) def test_sequence(name, a, b): assert a == b
このコードでも、test_data のパラメーター セットごとに 1 つずつ、合計 3 つのテストが生成されます。テスト名は自動的に生成されます。
利点
パラメータ化されたテストを使用すると、次のような利点があります。
以上がPython でパラメータ化された単体テストを効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。