在运行测试时,需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试,又或者直接将测试用例设置为失败。unittest单元测试框架提供了实现这些需求的装饰器。
1.unittest.skip(reason)
无条件地跳过装饰的测试,说明跳过测试的原因
2.unittest.skipIf(condition,reason)
如果条件为真时,跳过装饰的测试。
3.unittest.skipUless(condition,reason)
跳过装饰的测试,除非条件为真
4.unittest.expectedFailure()
测试标记为失败。不管执行结果是否失败,统一标记为失败。
代码如下:
# # coding =utf-8
# # calculator
#
# class Count ():
# def __init__(self, a, b):
# self.a = int (a)
# self.b = int (b)
#
# def add(self):
# return self.a + self.b
#
# def sub(self):
# return self.a - self.b
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, "当条件为True时,跳过测试")
def test_skip_if(self):
print('test bbb') @unittest.skipUnless (3 > 2, "当条件为True时,执行测试")
def test_skip_unless(self):
print('test ccc') @unittest.expectedFailure
def test_expected_failure(self):
assertEqual (2, 3) if __name__ == '__main__':
unittest.main ()
如上:第一条测试用例通过@unittest.skip()装饰,直接跳过不执行。
第二条用例通过@unittest.skipIf()装饰,当条件为真时不执行,3>2条件为真(True),跳过不执行。
第三条用例通过@unittest.skipUnless()z装饰,当条件为真时执行,判断3>2条件为真(True),第三条用例执行。
第四条用例通过@unittest.expectedFailure装饰,不管执行结果是否失败,统一标记为失败,但不会抛出错误信息。
这些方法同样可以作用测试类,只需要将他们定义在测试类上面即可。
import unittest @unittest.skip ("直接跳过该测试类")
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, "当条件为True时,跳过测试")
def test_skip_if(self):
print('test bbb') @unittest.skipUnless (3 > 2, "当条件为True时,执行测试")
def test_skip_unless(self):
print('test ccc') @unittest.expectedFailure
def test_expected_failure(self):
assertEqual (2, 3) if __name__ == '__main__':
unittest.main ()