Как отключить ведение журнала App Engine при выполнении модульных тестов? - PullRequest
8 голосов
/ 07 декабря 2010

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

Ответы [ 3 ]

3 голосов
/ 29 августа 2011

Не уверен, что это будет работать в gaetestbed, но, используя django-nose, я могу добавить следующее в мои настройки.1004 *

./manage.py test 2>&1 | egrep -v "^(root|Level)"
2 голосов
/ 08 декабря 2010

Это глупый способ,

найти capture.py и logcapture.py в вашем носу / plugins /

найти функцию 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 голосов
/ 09 декабря 2010

Я не попробовал предложение Bigbear, но нашел быстрый способ решения проблемы: перенаправляет вывод ошибки в файл.

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

Это позволяет увидетьчистая распечатка ваших ошибок в верхней части файла и минимизированный вывод журналирования App Engine под ним.

...