Как я могу подавлять регистрацию приложений при запуске тестов подразделения?

StackOverflow https://stackoverflow.com/questions/4373186

Вопрос

я использую Геостенс В моем приложении 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 Только сообщения об ошибках?

Это было полезно?

Решение

Вот глупый путь,

Найти 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]

Это должно работать.

Другие советы

Не уверен, что это будет работать в Gaetestbed, но с помощью Django-носа я могу добавить следующее в мои настройки .py:

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

Еще одна работа - это просто обратное grep вывод:

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top