2013-02-08 65 views
19

我做在setUpClass一些单元测试使用Python和一些预试验检查。我如何可以抛出一个unitest - 在setUpClassfail,如下面的简单的例子:如何在setUpClass中失败python unittest?

class MyTests(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls):  
     unittest.TestCase.fail("Test") 

    def test1(self): 
     pass 

if __name__ == '__main__': 
    unittest.main() 

提供了错误TypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead)

我明白了,我得到的失败的错误是一个实例方法,而我没有的MyClass一个实例呢。使用实例上最飞象

unittest.TestCase().fail("Test") 

也不起作用,因为unittest.TestCase本身没有测试。任何想法如何在MyClass中通过setUpClass中的某些条件未得到满足时通过所有测试?

的后续问题:有没有办法看到setUpClass测试?

回答

22

self.fail("test")投产您的安装实例方法失败,所有的测试

我想在类级别做到这一点,最简单的方法就是让一个类变量所以像:

@classmethod 
def setUpClass(cls): 
    cls.flag = False 

def setUp(self): 
    if self.flag: 
     self.fail("conditions not met") 

希望这是你想要的。

+0

我在'setUpClass',这不是'MyTest',所以'self'没有在这个级别上定义的一个实例。 'cls.fail()'也不起作用。 – Alex

+0

哎呦没有看到,修复。 – Raufio

22

使用简单的断言应该工作

assert False, "I mean for this to fail" 
+0

我在'setUpClass'这是一个类方法,所以我没有'self' ... – Alex

+0

简单'assert'是一个很好的主意... – Alex

+0

冷静,如果接受这就是你要找的:) – Greg

相关问题