2010-12-07 18 views
8

मैं अपने GAE ऐप में gaetestbed का उपयोग कर रहा हूं, और यह बहुत अच्छी तरह से काम कर रहा है। हालांकि, उपयोगी बयान है कि नाक प्रिंट जब अपने परीक्षण सही नहीं है दूर App इंजन की लॉगिंग द्वारा धोया जा रहा है:यूनिट परीक्षण चलाने के दौरान मैं ऐप इंजन लॉगिंग को कैसे दबा सकता हूं?

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 अपनी नाक/plugins में/दोनों फ़ाइलों में

खोज समारोह addCaptureToErr, तो यह संशोधन एक बेवकूफ तरीका है,। (मैं जो एक सही एक है पता नहीं है, कृपया अपने आप को परीक्षण)

मूल कोड इस तरह दिखना चाहिए:

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] 

यह चाहिए कार्यों में

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

परिवर्तन यह।

0

मैंने बिगबियर के सुझाव की कोशिश नहीं की है, लेकिन मुझे समस्या के लिए त्वरित समाधान मिला: त्रुटि फ़ाइल को फ़ाइल में पाइप करें।

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

यह आपको फ़ाइल के शीर्ष पर अपनी त्रुटियों की एक स्वच्छ प्रिंटआउट को देखने के लिए अनुमति देता है, और इसके नीचे App इंजन प्रवेश के कम से कम उत्पादन।

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 code को पैच करने से कहीं अधिक क्लीनर। पहले इसे आजमाएं। – Alice