我使用import unittest创建了unitests。当我想运行一个特定的测试并且我设置一个断点然后转到控制台并尝试评估表达式没有返回值,好像stdout不再是控制台屏幕。
我从未安装过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']
答案 0 :(得分:15)
看起来这个错误的官方修复PY-22505,就是将新的JB_DISABLE_BUFFERING
环境变量添加到您的单元测试配置中(不需要任何值,每个屏幕截图),但仅适用于2017.1.3或更高。
此屏幕截图显示为默认值配置添加env var,因此所有新配置都将继承它。您也可以将其单独添加到已保存的运行/调试配置中:
有了这个env var,我现在可以:
检查我的运行时并获取打印输出(注意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)
答案 1 :(得分:0)
这可能是因为你使用pycharm 2017.1结合了一个包含teamcity-messages的python环境吗?那个组合崩溃了,看 https://youtrack.jetbrains.com/issue/PY-23926
如果是这种情况,请提供该票(让帐户花了我1分钟)。
答案 2 :(得分:0)
我在Pycharm调试器中为Django运行pytests时遇到问题。添加-s
作为参数对我来说很成功。如Pycharm错误报告中所示:PY-22505来自Zach的答案。