2017-08-15 49 views
0

我爲我的最新Python項目設置了一個CI管道(如果有問題,請提供Gitlab CI),併爲我仍想實現的事件添加了幾個測試用例。在每個測試案例中,我提出了一個NotImplementedError,因爲它還沒有實現。抑制鼻子中特定類型的異常

import unittest 

class GenericTest(unittest.TestCase): 

    def test_stuff(self): 
     """I'll fill this in when I come around to it.""" 
     raise NotImplementedError 

通常,我希望這些測試失敗,因爲還沒有正常工作。但是,當我推送到我的存儲庫並且測試在CI系統上運行時,我想跳過這些測試。我已經知道他們會'失敗',他們掩蓋了實際失敗的測試。

是否有辦法抑制這些異常或特定類型的異常(如IKnowThisWillFailError),以便受影響的測試不計爲「失敗」?

+0

你真的養在測試誤差區分? 如何在應用程序中創建方法並在那裏引發錯誤,然後您可以在測試中除了錯誤之外,直到您實現該功能。 –

+1

@JanZeiseweis我這樣做,因爲它測試的功能需要添加到已經存在的函數中,並且它(應該)測試複雜的邊界情況。因此,爲了提高應用程序中的錯誤,我需要首先實現邊緣案例檢測和處理。我意識到這不是合適的TDD程序,因爲它使得「測試案例」更像是一種「待辦事項」,並且提醒說這個測試仍然缺少實際測試。 – m00am

回答

2

怎麼樣

import unittest 

class GenercTest(unittest.TestCase): 

    def test_stuff(self): 
     """I'll fill this in when I come around to it.""" 
     raise unittest.SkipTest("IKnowThisWillFail") 

CI系統也許可以跳過,失敗的測試

+1

謝謝!這就是我一直在尋找的。 – m00am

0
try: 
    # code 
except IKnowThisWillFailError: 
    pass 
except: 
    # catch 
+0

歡迎來到SO。不幸的是,這並沒有幫助我的問題:(但作爲回答在這個網站上的問題的一般提示:沒有解釋的代碼唯一的答案被認爲是所以不好的答案(見[這個元問題](https://meta.stackoverflow。 com/questions/256359/flag-try-this-code-answers-as-very-low-quality?lq = 1)以供參考)通過在答案中加入解釋,他們變得更具可讀性和可訪問性, upvotes。 – m00am