2010-12-07 4 views
8

Я использую gaetestbed в моем приложении GAE, и он работает очень хорошо. Тем не менее, полезные заявления, носа печатает, когда ваш тест неверности размываются лесозаготовки в 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, но с использованием Джанго-носа я могу добавить следующее к моему 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

Смежные вопросы