7

pytest の最新リリースでは、次のように、関数、クラス、モジュール、またはセッション スコープのフィクスチャを簡単に作成できます。

@pytest.fixture(scope="module") 
def db():
     return DB()

これにより、使用される各 python モジュールに対して 1 回だけ呼び出されるフィクスチャが作成されます。

しかし、Python パッケージごとに 1 回呼び出す必要があるフィクスチャについてはどうでしょうか。(nose の場合、パッケージの setUp/tearDown メソッドを使用して実行でき__init__.pyます)

4

1 に答える 1

5

パッケージまたはディレクトリ レベルのフィクスチャの場合conftest.py、必要なディレクトリ内のファイルでscope='session'. パッケージ/ディレクトリ内の最初のテストでフィクスチャが使用されると、フィクスチャがインスタンス化されます。次に例を示します。 ただし、フィクスチャ関数がファイナライザーを登録する場合、そのディレクトリでの最後のテストの直後ではなく、ファイナライザーが実行されていることがわかります。必要に応じて、より積極的なティアダウンをサポートしたり、「ディレクトリ」スコープを導入したりするために、pytest を作成できると思います。通常、ティアダウンが実行されるのが少し遅くても、実行が早すぎない限り、大きな問題にはなりません :) また、明らかに Jasonは、nose のパッケージ レベルのセットアップ/ティアダウン サポートを廃止するつもりであることにも注意してください。

とにかく、より熱心で正確な pytest 分解が必要な場合は、お気軽にissue を開いてください。

于 2012-11-07T10:03:15.243 に答える