Командная строка интерактивной отладки Pycharm unit test не работает

При отладке модульных тестов (через тест-драйв pycharm) можно включить интерактивную командную строку, но (в отличие от отладки обычных скриптов) введенные команды не выдают никакого вывода. По сути, похоже, что stdout захватывается где-то, потому что stderr работает так, как ожидалось:

>>> print "a"
>>> import sys
>>> sys.stderr.write("moof")
moof
>>> sys.stdout.write("moof")
>>> sys.stderr.write("test")
test

Является ли это ожидаемым поведением? Мне очень нравится интерактивная консоль отладки, и было бы здорово, если бы это было хорошо при отладке модульных тестов.

Ответ 1

Это, вероятно, потому, что ваш тестовый бегун захватывает stdout, но не stderr.

Я использую py.test, который захватывает как stdout, так и stderr поэтому я не вижу никакого вывода. Если я хочу видеть вывод, я должен передать флаг -s в мой run.test, который можно сделать, изменив конфигурацию run/debug и добавив этот флаг в поле опций. (Запустите > Изменить конфигурации > По умолчанию > Тесты Python > py.test > Добавить -s в поле параметров.)

>>> print 'a'
a
>>> import sys
>>> sys.stderr.write('moof')
moof
>>> sys.stdout.write('moof')
moof
>>> sys.stderr.write('test')
test

Примечание: флаг -s можно в равной степени использовать с носовые тесты

Ответ 2

Для unittest вы можете добавить '--capture = no' в конфигурацию запуска/отладки Pycharm - это покажет весь вывод в реальном времени