2010-12-07 54 views
8

我在我的GAE應用程序中使用gaetestbed,它工作得很好。然而,有用的語句鼻子打印時的測試是不正確被沖走App Engine的記錄:如何在運行單元測試時取消App Engine日誌記錄?

root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 85, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')" 
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 87, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')" 
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 86, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')" 
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 87, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')" 
--------------------- >> end captured logging << --------------------- 

---------------------------------------------------------------------- 
Ran 28 tests in 3.605s 

有沒有辦法抑制這種,所以我只能拿到乾淨something != something else錯誤信息?

回答

2

這是一個笨方法,

發現capture.py和logcapture.py在你的鼻子/插件/在這兩個文件

查找功能addCaptureToErr,然後修改。 (我不知道哪一個是正確的,請自己測試)

原來的代碼應該是這樣的:

def addCaptureToErr(self, ev, output): 
    return '\n'.join([str(ev) , ln('>> begin captured stdout <<'), 
         output, ln('>> end captured stdout <<')]) 

變化成

def addCaptureToErr(self, ev, output): 
    check_errmsgs(output) 
    return '\n'.join([str(ev) , ln('>> begin captured stdout <<'), 
         output, ln('>> end captured stdout <<')]) 

def check_errmsgs(self,errmsgs): 
    for i in range(len(errmsgs)-1,-1,-1): 
     item = errmsgs[i].split(":") 
     if(item[2].find("Evaling filter expression")): 
      #find msgs you want to ignore 
      del errmsgs[i] 

它應該工作。

0

我還沒有嘗試Bigbear的建議,但我確實找到了一個快速解決問題的方法:將錯誤輸出傳遞到文件中。

python run_nosetests.py 2> failures.tmp 
gedit failures.tmp & 

這可以讓你看到你的錯誤的清潔打印在文件的頂部,並在其下方App Engine的日誌記錄的最小輸出。

3

不知道這會在gaetestbed工作,但使用Django鼻我可以添加以下到我的settings.py:

NOSE_ARGS = ['--logging-clear-handlers', '--logging-filter=-root'] 

另一個解決辦法是隻用grep逆輸出:

./manage.py test 2>&1 | egrep -v "^(root|Level)" 
+1

建議的鼻子參數可以完成這項工作(至少它在提問後的4年:)),並且比修補鼻子src代碼更乾淨。先試試這個。 – Alice 2014-10-25 23:11:16

相關問題