Pytest-fixtures

提供:Dev Guides
移動先:案内検索

Pytest-フィクスチャ

フィクスチャは関数であり、適用される各テスト関数の前に実行されます。 フィクスチャは、データベース接続、テストするURL、入力データなどのテストにデータを供給するために使用されます。 したがって、すべてのテストで同じコードを実行する代わりに、フィクスチャ関数をテストに添付すると、各テストを実行する前に実行され、データがテストに返されます。

関数は、フィクスチャとしてマークされています-

@pytest.fixture

テスト関数は、フィクスチャー名を入力パラメーターとして指定することにより、フィクスチャーを使用できます。

ファイル test_div_by_3_6.py を作成し、以下のコードを追加します

import pytest

@pytest.fixture
def input_value():
   input = 39
   return input

def test_divisible_by_3(input_value):
   assert input_value % 3 == 0

def test_divisible_by_6(input_value):
   assert input_value % 6 == 0

ここに、テストに入力を提供する input_value という名前のフィクスチャ関数があります。 フィクスチャ関数にアクセスするには、テストではフィクスチャ名を入力パラメータとして指定する必要があります。

Pytestは、テストの実行中に、フィクスチャー名を入力パラメーターとして表示します。 次に、フィクスチャ関数を実行し、戻り値が入力パラメーターに保存されます。入力パラメーターはテストで使用できます。

次のコマンドを使用してテストを実行します-

pytest -k divisible -v

上記のコマンドは、次の結果を生成します-

test_div_by_3_6.py::test_divisible_by_3 PASSED
test_div_by_3_6.py::test_divisible_by_6 FAILED
============================================== FAILURES
==============================================
________________________________________ test_divisible_by_6
_________________________________________
input_value = 39
   def test_divisible_by_6(input_value):
>  assert input_value % 6 == 0
E  assert (39 % 6) == 0
test_div_by_3_6.py:12: AssertionError
========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds
==========================

ただし、このアプローチには独自の制限があります。 テストファイル内で定義されたフィクスチャ関数は、テストファイル内にのみスコープを持ちます。 別のテストファイルでそのフィクスチャを使用することはできません。 フィクスチャを複数のテストファイルで使用できるようにするには、conftest.pyというファイルでフィクスチャ関数を定義する必要があります。 conftest.py については、次の章で説明します。