2010-06-12 61 views
7

我使用標準的python日誌記錄模塊。當我打電話給python manage.py test時,我想在所有測試運行之前禁用日誌記錄。是否有信號或其他類型的鉤子可以用來調用logging.disable?或者有沒有其他一些方法可以在python manage.py test運行時禁用日誌記錄?在manage.py測試期間禁用日誌記錄?

回答

2

我知道的唯一方法就是編輯manage.py本身......當然不是很優雅,但至少它應該讓你到你需要的地方。

+0

阿當添加到您的settings.py文件以禁用日誌輸出,我沒有想到的是(...很明顯嘛) 。謝謝! – 2010-06-13 13:20:33

+0

@Eric,不客氣! – 2010-06-13 14:17:43

9

作爲一個很不錯的選擇,你可以運行在您的設置測試時,禁用日誌文件是這樣的:

if 'test' in sys.argv: 
    logger.removeHandler(handler) 
    logger.setLevel(logging.ERROR) 
+0

謝謝 - 像魅力一樣工作! – 2010-12-16 10:51:59

4

我更喜歡有獨立settings_test.py,在那裏我可以刪除不必要的應用程序,中間件等運行測試測試過程中我不需要的東西。我可以通過這種方式在這裏禁用日誌輸出也:

from settings import * 
import logging 

# direct all logging output to nowhere 
class NullHandler(logging.Handler): 
    def emit(self, record): 
     pass 
logging.getLogger().addHandler(NullHandler()) 
12

其實是有一個更好的方法來做到這一點,與django-nose有一個kwarg:

只要運行:

./bin/manage.py test --logging-clear-handlers 
+1

./manage.py:error:no such option:--logging-clear-handlers – 2012-12-18 11:21:45

+1

確實,我沒有指定,但你需要django-nose:https://github.com/jbalogh/django-鼻子和https://nose.readthedocs.org/zh-CN/latest/usage.html?highlight=#cmdoption--logging-clear-handlers – Rmatt 2012-12-19 17:52:04

5
我用

最簡單的事情:

import logging 

class MyTestClass(TestCase): 
    def setUp(self): 
     logging.disable(logging.CRITICAL) 

這不需要編輯,打補丁,安裝額外的,等等。所有日誌記錄完全關閉。

0

如果使用django-nose,那麼你可以下面的代碼片段運行./manage.py test

NOSE_ARGS = [ 
    '--nologcapture' 
]