4

プロジェクトに次の構造があります。

app/
    __init__.py
    main.py
    tests/
        __init__.py
        test_a.py
        test_b.py

testsパッケージの下のテストのロギングを初期化したいと思います。初期化コードはapp/tests/__init__.py、テストが実行される前に実行されるという前提で配置しましたが、そうではないことがわかりました。

次のシナリオでこの初期化コードを実行するにはどうすればよいですか?

  • python test_a.pyコマンドプロンプトから実行する場合
  • test_a.pyeclipse\aptana\pycharm で単体テストとして実行する場合
  • eclipse\aptana\pycharm でテスト スイート全体を実行する場合
4

1 に答える 1

0

通常の実行とテストにロガー構成ファイルを使用できます。これは、さまざまな構成を持つ最も安全な方法です。

「回避策」の方法は、ロガーを再作成することです。__init__.py に新しいロガーを追加したのではないでしょうか? 構成が完了すると、ロギングは構成を保持し、拡張のみを許可します。ただし、ここで説明されているように、ロガー全体を再作成してみることができます: Python logging before you run logging.basicConfig? 例えば:

root = logging.getLogger()
if root.handlers:
    for handler in root.handlers:
        root.removeHandler(handler)
# now create your test config
logging.basicConfig(format='%(asctime)s %(message)s',level=logging.DEBUG)

このコードを test.py ファイルに追加するか、__init__.py に追加しますが、おそらく次のものが必要になる場合があります。

from tests import *

テストで実行できるようにします。

于 2012-06-12T10:32:32.027 に答える