跳过预期和预期失败
在运行测试时,有时需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试,又或者直接将测试用例设置为失败。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):
……………