2017-04-11 232 views
10

我使用import unittest創建了unitests。當我想運行一個特定的測試,然後放置一個斷點,然後轉到控制檯並嘗試評估表達式沒有返回值,就好像stdout不再是控制檯屏幕一樣。pycharm中單元測試控制檯無輸出2017

我從來沒有安裝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

你可以嘗試編輯'''助手/ pycharm/TeamCity的/ unittestpy.py'''(在PyCharm.app包在我的Mac上,不確定它在Windows中的位置)。我把它改成'''captureStandardOutput ='false''''並且調試器以我的修改值開始,但是它的結果是一樣的: –

回答

-1

Pycharm unit test interactive debug command line doesn't work

使用pytest

(運行>編輯配置>默認值>的Python測試> py.test>添加-s到選項字段------>(附加參數。))

設置默認運行測試通過pytest:

(首選項>工具> Python的Intergrated工具>默認測試運行器)

+0

它對我來說不適用於Pycharm 2017.1.2 ... –

9

看起來像這個bug,PY-22505官方修復,是新JB_DISABLE_BUFFERING環境變量添加到您的單元測試配置(不需要值,每截圖),但僅限於2017年1月3日或以上

此屏幕截圖顯示添加env var的默認值配置,所以所有新的配置將繼承它。您還可以添加此單獨已保存的運行/調試配置:

Setting env var for all future ad-hoc tests

隨着地方的環境變量,我現在可以:

  1. 添加斷點
  2. 右擊任何測試或類別,並選擇'調試單元測試...'菜單選項
  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) 
    
+0

這只是做不工作 –

+0

@KarelMacek你有哪種版本的PyCharm? –

+0

它確實對我有用,使用PyCharm 2017.2.2 –