1. ホーム
  2. python

[解決済み] py.testセッションの中からコードが実行されるかどうかをテストする

2023-05-24 18:52:17

質問

私のコードがpy.testで実行されている場合、異なるデータベースに接続したいです。 py.testセッションで実行されているかどうかを知るために、呼び出す関数またはテストできる環境変数はありますか? これを処理する最良の方法は何ですか?

どのように解決するのですか?

解決策は RTFM から来ています。 また、マニュアルにはコードの間違いがありましたので、以下に修正します。

pytestの実行内から実行されているかどうかを検出する

通常、テストから呼び出された場合にアプリケーションのコードが異なる振る舞いをするようにするのは悪い考えです。 をさせるのは悪い考えです。しかし、アプリケーションコードがテストから実行されているかどうかを絶対に見つけなければならない場合 をどうしても知りたい場合は、次のような方法があります。 このようにすることができます。

# content of conftest.py
def pytest_configure(config):
    import sys
    sys._called_from_test = True

def pytest_unconfigure(config):
    import sys  # This was missing from the manual
    del sys._called_from_test

で、sys._called_from_testフラグをチェックします。

if hasattr(sys, '_called_from_test'):
    # called from within a test run
else:
    # called "normally"

のように、アプリケーションの中で適宜変更してください。また、フラグを処理するために sys よりも独自の アプリケーションモジュールを使うのもいい考えです。