2012-07-24 79 views
0

我想用nose測試一個包。在我寫入stderr的其中一項測試中,這會導致測試在Jenkins中報告爲中斷(我開始使用nose進行測試並生成Junit .xml輸出以確定成功) 是否可以登錄stderr或對其進行檢查某些值?忽略測試結果的stderr輸出

所以車費我的測試看起來大致是這樣的:

def testFunc() { 
    f1() 
    f2() } 

而且因爲我寫的從內到stderr失敗,我可以告訴鼻子忽略這個或測試失去了一些東西(我希望它只是失敗如果發生異常)

編輯: 錯誤輸出導致失敗的假設是錯誤的。在100年代的產品線之間是一個例外。 (由於某種原因,jenkins先顯示未格式化(不換行)輸出,然後是異常跟蹤,之後輸出再一次,換行),我只是忽略了這個例外)

+0

你試過重定向stderr嗎? http://stackoverflow.com/questions/6796492/python-temporarily-redirect-stdout-stderr – Qlaus 2012-07-24 17:17:43

回答

3

如果你不想看到stderr,你可以使用loggingtutorial

實施例:

import logging 
logging.basicConfig(level=logging.ERROR) 
# instead of sys.stderr.write(): 
logging.warning("This is a warning!") 

在這種情況下,警告低於日誌級別閾值,所以它不會被打印到stderr。如果你想看到錯誤,但不一定要實時,你可以指定一個日誌文件(文件名參數爲logging.basicConfig)。