Нет выхода в консоли для unittests в pycharm 2017

Я создал unitests, используя import unittest. Когда я хочу запустить конкретный тест, а затем поставлю точку останова, перейдите на консоль и попытайтесь выразить выражения , нет возвращаемого значения, как если бы стандартный вывод больше не был консольным экраном.

Я никогда не устанавливал teamcity, но, как ни странно, я получаю сообщения при запуске unittest. ОЧЕНЬ СТРАННО. Я думал, что, возможно, captureStandardOutput = 'true' (подчеркнутый в последней строке ниже) является причиной проблемы, но я даже не могу найти, где изменить параметр, чтобы проверить его.

C:\Users\selas\AppData\Local\Continuum\Anaconda3\python.exe "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2017.1\helpers\pydev\pydevd.py" --multiproc --qt-support --client 127.0.0.1 --port 59641 --file "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2017.1\helpers\pycharm\_jb_unittest_runner.py" --target tests.test_model.FigurationDBTesting.test_printFigurationPerBoundary
pydev debugger: process 8932 is connecting
Connected to pydev debugger (build 171.3780.115)

teamcity[enteredTheMatrix timestamp='...']
Launching unittests with arguments python -m unittest tests.test_model.FigurationDBTesting.test_printFigurationPerBoundary
teamcity[testSuiteStarted timestamp='...' locationHint='python://tests' name='tests' nodeId='1' parentNodeId='0']
teamcity[testSuiteStarted timestamp='...' locationHint='python://tests.test_model' name='test_model' nodeId='2' parentNodeId='1']
teamcity[testSuiteStarted timestamp='...' locationHint='python://tests.test_model.FigurationDBTesting' name='FigurationDBTesting' nodeId='3' parentNodeId='2']

teamcity[testStarted timestamp='...' >!> captureStandardOutput='true' <!< locationHint='python://tests.test_model.FigurationDBTesting.test_printFigurationPerBoundary' name='test_printFigurationPerBoundary' nodeId='4' parentNodeId='3']

Ответ 1

Похоже на официальное исправление этой ошибки, PY-22505, заключается в добавлении новой переменной среды JB_DISABLE_BUFFERING в конфигурацию unit test (без значения для скриншота), , но только для 2017.1.3 и выше.

Этот снимок экрана показывает добавление env var для Defaults, поэтому все новые конфигурации наследуют его. Вы также можете добавить это отдельно к уже сохраненным конфигурациям Run/Debug:

Установка env var для всех будущих ad-hoc тестов

С этим env var на месте я могу теперь:

  • добавить точку останова
  • щелкните правой кнопкой мыши любой тест или класс и выберите опцию "Отладка Unittests for..."
  • нажмите точку останова, перейдите в панель отладки
  • проверить время выполнения и получить распечатки (примечание captureStandardOutput='true'):

    ...
    ##teamcity[testStarted timestamp='...' captureStandardOutput='true' locationHint='python</Users/zyoung/PycharmProjects/Foo/test/unit_tests>://test_distance.Foo.testMatchRatio_050' name='testMatchRatio_050' nodeId='3' parentNodeId='2']
    import sys; print('Python %s on %s' % (sys.version, sys.platform))
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 12:39:47) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    
    >>> print(self)
    testMatchRatio_050 (test_distance.Foo)
    

Ответ 2

Может ли это быть потому, что вы используете pycharm 2017.1 в сочетании с средой python, в которой есть сообщения teamcity? Эта комбинация сбоев, см. https://youtrack.jetbrains.com/issue/PY-23926

Приобретите этот билет, если это произойдет (сделайте учетную запись заняло у меня 1 минуту).

Ответ 3

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

использовать pytest

(Запустить > Изменить конфигурации > По умолчанию > Тесты Python > py.test > Добавить -s в поле параметров ------ > (Дополнительные аргументы).)

настройки по умолчанию запускают тесты с помощью pytest:

(Настройки > Инструменты > Интегрированные инструменты Python > стандартный тестовый бегун)