运行测试时,有时需要直接跳过某些测试用例,有时当用例符合某个条件时跳过测试用例,或是直接将用例设置为失败的用例。
Unittest提供了下边4种装饰器实现测试跳过和预期故障。
1、unittest.skip( reason ) 无条件跳过装饰的测试,说明跳过的原因。 执行输出为:s
2、unittest.skipIf( condition, reason ) 当条件为真事,跳过测试,说明原因。 执行输出为:s
3、unittest.skipUnless( condition, reason ) 除非条件为真,跳过装饰的测试,说明原因
4、unittest.expectedFailure 不管执行结果是否失败,都标记测试测试为失败。 执行输出:x
例子:
代码如下
#coding=utf-8
import unittest
class MyTest(unittest.TestCase):
def setup(self):
pass
def tearDown(self):
pass
#跳过测试,执行输出s
@unittest.skip(u"直接跳过测试")
def test_skip(self):
print('Test_a')
@unittest.skipIf(3>2,u"条件为True时跳过测试")
def test_skipIf(self):
print('Test_b')
@unittest.skipUnless(3 > 2, u"当条件为true时执行测试")
def test_skip_Unless(self):
print('test_c')
@unittest.expectedFailure()
def test_expected_failure(self):
assertEqual(2,3)
#失败,输出x
#main函数
if __name__=='__main__':
unittest.main()
执行结果如下:
解释:x 是预期失败的输出,s 是跳过测试
注:我遇见一个低级错误,main函数,if 语句前边有空格,就调用不了函数