“ 本文通过多个实例,详细解释了unittest中跳过操作的分类,跳过操作参数的导入,以及介绍了测试用例之间指定参数联动判断跳过的方法,尽情享用吧!“
PS:“大佬可直接跳转至文末总结,阅读相关内容 ”
- 博主每篇文章的注释都是干货!每个代码段都有详细注释,一定要认真看注释!!!
- 重要的事情说三遍:一定要看注释!!!一定要看注释!!!一定要看注释!!!
跳过的类型
- 直接跳过、条件跳过
- 一定要认真看注释!!!
# 1.跳过语句:直接跳过、条件跳过
# @unittest.skip('跳过的原因')
# @unittest.skipIf('跳过条件', '跳过的原因')
# @unittest.skipUnless('不跳过的条件', '不跳过的原因')
# 实例演示:下列测试仅仅执行test3,因为test1跳过、test2满足跳过条件,test3满足不跳过条件
class BasicTestCase(unittest.TestCase):
@unittest.skip('因为我想跳过所以跳过') # 直接跳过
def test1(self):
print('执行test1')
@unittest.skipIf(888 < 999, '因为888比999小,所以跳过') # 条件性跳过
def test2(self):
print('执行test2')
@unittest.skipUnless('你真厉害', '因为你真厉害,所以不跳过')
def test3(self):
print('执行test3')
if __name__ == '__main__': # 设定执行unittest的主函数
unittest.main()
条件跳过参数的导入
- 必须在类下直接定义
- 因为@unittest.skipIf()语句执行优先级大于所有def,即无论是setUp()、setUpClass()还是test2()都在其之后执行,所以定义必须在类下
- 一定要认真看注释!!!
# 2.判定跳过的参数导入方法
# 2.必须在类下直接定义,如示例的number
# 2.因为@unittest.skipIf()语句执行优先级大于所有def,即无论是setUp()、setUpClass()还是test2()都在其之后执行,所以定义必须在类下
# 实例演示:
class BasicTestCase(unittest.TestCase):
number = '888'
@unittest.skipIf(number < '999', '因为number比999小,所以跳过')
def test2(self): # 不会被执行,因为888满足跳过的条件
print('执行test2')
测试用例之间参数联动判定跳过的方法
- 使用测试用例之间(例如:test1()、test2())相关参数联动设定跳过的方法
- 语句编码+类属性变量---类属性变量通常用列表、字典等,解决多条件依赖时方便
- 一定要认真看注释!!!
# 3.使用tests之间相关参数联动设定跳过的方法,语句编码+类属性变量---变量通常用多值类型的结构(列表、字典等,因为可能依赖多个条件)
class BasicTestCase(unittest.TestCase):
judge = {'first': 0}
def test2(self):
print('执行test2')
BasicTestCase.judge['first'] = 888 # 更改下个测试所要依赖的变量值
def test3(self):
if BasicTestCase.judge['first'] == 888: # 设定判定条件看是否需要跳过
return # 若满足条件则直接return结束,此test下的之后的语句均不执行
# print('执行test3') # 此段代码中这句话加与不加都并不会被执行,测试通过但执行语句并没有执行,因为根据依赖的条件test3已经结束
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main()
总结
- 跳过操作的分类:直接跳过、条件跳过
- 判定跳过的参数导入方法:必须在类下直接定义
- 使用tests之间相关参数联动设定跳过的方法,编码方式+变量,注意跳过的是当前test下return后的语句
💗 “ 想和你一起看漫天繁星,共许彼岸三千光明 。”
——Created By 是羽十八ya