2010-12-07 8 views
8

estoy usando gaetestbed en mi GAE aplicación, y está funcionando muy bien. Sin embargo, las declaraciones útiles que nariz impresiones cuando la prueba es incorrecta está siendo arrastrado por la tala de App Engine:¿Cómo suprimo el registro de App Engine mientras realizo las pruebas unitarias?

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 

¿Hay una manera de suprimir este para que pueda obtener los something != something else mensajes de error limpias solamente?

Respuesta

2

Aquí es una manera estúpida,

hallazgo capture.py y logcapture.py en la nariz/plugins/

función de búsqueda addCaptureToErr en ambos archivos, y luego revisarlo. (no sé cuál es la correcta, por favor ponerse a prueba)

código original debe tener este aspecto:

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

cambio en

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] 

TI deben obras.

0

No he intentado la sugerencia de Bigbear, pero encontré una solución rápida al problema: canaliza la salida err en un archivo.

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

Esto le permite ver una impresión limpia de sus errores en la parte superior del archivo, y una salida minimizada de la aplicación de registro del motor por debajo de él.

3

No estoy seguro de que esto va a funcionar en gaetestbed, pero usando Django-nariz que puede añadir lo siguiente a mi settings.py:

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

Otra solución consiste simplemente a grep inversa de la salida:

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

los argumentos nariz sugeridas hacer el trabajo (al menos lo hace 4 años después de que se hizo la pregunta :)), y mucho más limpio que el parcheo código nariz src. Prueba esto primero. – Alice

Cuestiones relacionadas