コンテンツにスキップ

pytest 8 系から setup/teardown の書き方が変わった

pytest 8 系から nose のサポートが終了した。これにより、nose を使っているプロジェクトに影響が出る可能性がある。 具体的にsetup/teardownのフィクスチャが影響を受ける。 これまでは次のようにかけていたが、pytest 8 系ではエラーになる。

class Test:
    def setup(self):
        self.resource = make_resource()

    def teardown(self):
        self.resource.close()

    def test_foo(self): ...

    def test_bar(self): ...

8 系ではこれを次のように書き換える。

class Test:
    def setup_method(self):
        self.resource = make_resource()

    def teardown_method(self):
        self.resource.close()

    def test_foo(self): ...

    def test_bar(self): ...

公式ドキュメントでは他にも@with_setupデコレータの代替方法などが紹介されているので、詳細はそちらを参照されたい。