2012-06-12 37 views
3

我曾經在一個項目的結構如下:包__init__一個測試

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.py作爲下蝕一個單元測試\集錦\ pycharm
  • 當運行下蝕整個測試套件\集錦\ pycharm
+0

如果我以錯誤的方式回答這個問題,請告訴我。例如如果我可以簡單地使用'setup_logging.py'並在每次測試開始時導入它。我只是想最小化鍋爐板代碼... – Jonathan

+0

如果您直接運行'test_a.py',它不會被視爲程序包的一部分,就像普通文件一樣。所以'__init __。py'在這裏沒有任何關係。只是評論,我不知道你的問題的解決方案,但... – jadkik94

回答

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 * 

使其在測試中執行。

相關問題