Нет выхода в консоли для 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 > стандартный тестовый бегун)