コンテンツにスキップ

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で準備・後片付けを指定している場合も、yieldの前に準備、後に後片付けを書く pytest のフィクスチャへ置き換える必要がある。追加の例はpytest の nose 移行ドキュメントにある。