2017-08-15 43 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