0
点赞
收藏
分享

微信扫一扫

Unittest自动化测试框架教程(三)——测试用例跳过skip操作详解(附实例演示)


跳过的类型

  • 直接跳过、条件跳过

  • 一定要认真看注释!!!
# 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后的语句
举报

相关推荐

0 条评论