2014-02-05 28 views

回答

1

你最好的選擇是將禁用插件並捕獲標準輸出與其他一些手段,例如描述here

import sys 
import nose 
from cStringIO import StringIO  

def basic_test(): 
    print "hello" 

if __name__=="__main__": 
    module_name = sys.modules[__name__].__file__ 

    old_stdout = sys.stdout 
    sys.stdout = mystdout = StringIO() 
    result = nose.run(argv=[sys.argv[0], 
          module_name, 
          '-s']) 
    sys.stdout = old_stdout 
    print mystdout.getvalue() 

當這樣運行它,你將得到:

. 
---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 
hello 
+0

感謝您的關注。這幫了很多。另一點是要認識到,鼻子似乎將所有的輸出發送到STDERR,而不是STDOUT。另外我必須問:我很困惑。爲什麼你在代碼中沒有使用Capture的時候導入Capture? - Regards,Bill – user61629

+0

不需要Capture - 我試圖查看是否可以將Capture插件的一個實例傳遞給nose.run(),並在事實之後訪問它的緩衝區,但那不起作用。我認爲你的測試中的錯誤會進入stderr,但打印輸出將在stdout中。順便說一句,你總是可以複製鼻子插件來製作你自己的「專業」插件,它完全符合你的要求 - 它不應該太難。 – Oleksiy