1

ティアダウンがない場合、setup_module を使用する必要がありますか?それとも最上位ステートメントのみを使用できますか?

=== test_1.py ===
foo = 3
def test_foo(): assert foo == 3

=== test_2.py 
def setup_module(m): m.foo = 3
def test_foo(): assert foo == 3

py.test は最初のテストを実行する前に、すべての最上位ステートメントを順番に実行しますか?

ありがとう!

4

1 に答える 1

1

py.test は、テストの前にトップレベルのステートメントを評価するように見えるので、機能しtest_1.pyます。

ただし、テストを作成している場合、トップレベル ステートメントを使用することは一般的にお勧めできません。テストをテスト ケース (関連するテスト コードを保持するクラス) に構造化し、アプリケーションの特定の機能をテストする必要があります。したがって、コード ( test_2.py) をテスト ケースに変換すると、次のようになります。

def setup_module(module):
    module.TestFoo.foo = 3

class TestFoo:
    def test_foo(self):
        assert self.foo == 3

このようにして、関連するすべてのテストを追加し続けることができ、モジュールごとTestFooに複数のテストを追加することもできます (ただし、通常はそれぞれを独自のファイルに含めるのが最善です)。TestCaseTestCase

あなたのteardown_module質問に関しては、アプリケーションの状態を初期状態に復元する必要がある場合 (新しく作成されたアイテムを削除するなど)、またはハングしている接続をクリーンアップする必要がある場合 (ファイルやソケットを閉じるなど) にのみ、ティアダウンが必要です。この場合、setup_moduleクリーンアップが必要なことは何もしていないので、ティアダウンは必要なく、py.test はそれがないことを訴えません。

于 2012-10-03T03:54:41.940 に答える