Python、Java および他の多くの言語は xUnit スタイルのテストに対応しています。これはテスト関数の実行前に setup (“フィクスチャ”) メソッドを、テスト関数の実行後に teardown メソッドを呼び出す典型的なスタイルです。 py.test は、モジュール単位やクラス単位のフックを必要に応じて呼び出して処理する、より細分化された setup/teardown のモデルに対応しています。
1つのモジュールに複数のテスト関数やテストクラスがある場合、必要に応じて、全ての関数に対して通常1度だけ呼び出されるフィクスチャメソッドを実装できます:
def setup_module(module):
""" モジュールの実行に関して任意の状態をセットアップする """
def teardown_module(module):
""" setup_module で事前にセットアップした状態を解体する """
同様に、クラスの全てのテストメソッドが呼び出される前後に、クラスレベルで次のメソッドが呼ばれます:
@classmethod
def setup_class(cls):
""" (通常はテストを含む) クラスの実行に関して任意の状態をセットアップする """
@classmethod
def teardown_class(cls):
""" setup_class で事前にセットアップした状態を解体する """
同様に、それぞれのメソッド呼び出しの前後で次のメソッドが呼ばれます:
def setup_method(self, method):
""" クラス内のメソッドの実行に関して任意の状態をセットアップする
setup_method はクラスのテストメソッド単位で実行される
"""
def teardown_method(self, method):
""" setup_method で事前にセットアップした状態を解体する """
モジュールレベルで直接的にテスト関数を定義したいなら、次の関数もフィクスチャを実装するのに使えます:
def setup_function(function):
""" 関数の実行に関して任意の状態をセットアップする
モジュール内の関数単位で実行される
"""
def teardown_function(function):
""" setup_function で事前にセットアップした状態を解体する """
テストプロセスにつき複数回実行される setup/teardown の組み合わせに使えることも覚えておいてください。