跳过预期和预期失败

 

在运行测试时,有时需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试,又或者直接将测试用例设置为失败。unittest提供了实现这些需求的装饰器。

 

--unittest.skip(reason)
无条件地跳过装饰的测试,说明跳过的原因。


--unittest.skipIf(condition,reason)
如果条件为真时,跳过装饰的测试。


--unittest.skipUnless(condition,reason)
除非条件为真,跳过装饰的测试。


--unittest.expectedFailure()
测试标记为失败。不管执行结果是否失败,统一标记为失败

 

#coding:utf-8
import unittest

class MyTest(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    @unittest.skip("直接跳过测试")
    def test_skip(self):
        print("test aaa")

    @unittest.skipIf(3>2,"当条件为真时,跳过测试")
    def test_skip_if(self):
        print "test bbb"

    @unittest.skipUnless(3>2,"当条件为真时,执行测试")
    def test_skip_unless(self):
        print "test ccc"

    @unittest.expectedFailure
    def test_excepted_failure(self):
        self.assertEqual(2,3)


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

执行结果如下图所示:

 

 

 

 

此例子中,创建了4条测试用例,第一条用例通过@unittest.skip()装饰,直接跳过不执行。
第二条用例通过@unittest.skipIf()装饰,当条件为真时不执行。
第三条用例通过@unittest.skipUnless()装饰,当条件为真时执行。
第四条用例通过@unittest.expectedFailure装饰,不管执行结果是否失败,统一标记为失败,但不会抛出错误信息。

 

这些也可以直接作用于测试类

#coding:utf-8
import unittest
 ……………
@unittest.skip("直接跳过测试类") 
class MyTest(unittest.TestCase):
……………