控制台中没有输出用于pycharm 2017中的单元测试

时间:2017-04-11 14:47:42

标签: pycharm teamcity

我使用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']

3 个答案:

答案 0 :(得分:15)

看起来这个错误的官方修复PY-22505,就是将新的JB_DISABLE_BUFFERING环境变量添加到您的单元测试配置中(不需要任何值,每个屏幕截图),但仅适用于2017.1.3或更高

此屏幕截图显示为默认值配置添加env var,因此所有新配置都将继承它。您也可以将其单独添加到已保存的运行/调试配置中:

Setting env var for all future ad-hoc tests

有了这个env var,我现在可以:

  1. 添加断点
  2. 右键单击任何测试或类,然后选择'Debug Unittests for ...'菜单选项
  3. 点击断点,转到调试控制台
  4. 检查我的运行时并获取打印输出(注意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的答案。