python接口自动化-unittest跳过用例
Posted 青春无限坑!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python接口自动化-unittest跳过用例相关的知识,希望对你有一定的参考价值。
背景
我们在做自动化测试的时候,可能会遇到一些用例中间不用回归,想要进行跳过。直接注释的话,代码量修改过大,
显然这个方法不妥,哪还有什么方法?unittest这个自动化框架可以帮助我们完成这个操作
自动跳过用例
unittest中提供了一些跳过用例的装饰器方法。我们可以通过这些装饰器来帮我们完成这些操作
@unittest.skip()
表示:无条件跳过用例
def skip(reason):
"""
无条件跳过用例
"""
def decorator(test_item):
if not isinstance(test_item, type):
@functools.wraps(test_item)
def skip_wrapper(*args, **kwargs):
raise SkipTest(reason)
test_item = skip_wrapper
test_item.__unittest_skip__ = True
test_item.__unittest_skip_why__ = reason
return test_item
if isinstance(reason, types.FunctionType):
test_item = reason
reason = ''
return decorator(test_item)
return decorator
@unittest.skipIf()
表示:如果条件为真,则跳过测试。
def skipIf(condition, reason):
"""
如果条件为真,则跳过测试。
"""
if condition:
return skip(reason)
return _id
@unittest.skipUnless()
表示:除非条件为真,否则跳过测试。
def skipUnless(condition, reason):
"""
除非条件为真,否则跳过测试。
"""
if not condition:
return skip(reason)
return _id
demo演示
# -*- coding : utf-8 -*-
import unittest
#减法运算
def add(a,b):
return a+b
#加法运算
def sub(a,b):
return a-b
# 测试用例类1
class TestDemo(unittest.TestCase):
@unittest.skip("强制性跳过")
#两个0相加
def test_add_001(self):
resp = add(0,0)
self.assertEqual(0,resp)
@unittest.skipIf(True,"条件为真的时候跳过")
#两个正数相加
def test_add_002(self):
resp = add(1,1)
self.assertEqual(2,resp)
# 测试用例类2
class TestDemo1(unittest.TestCase):
@unittest.skipUnless(False, "条件为假的时候跳过")
#两个0相减
def test_sub_001(self):
resp = sub(0,0)
self.assertEqual(0,resp)
#两个正数相减
def test_sub_002(self):
resp = sub(10,5)
self.assertEqual(5,resp)
if __name__ == '__main__':
unittest.main(verbosity=2)
通过代码可以发现我们对用例test_add_001,test_add_002,test_sub_001进行了跳过,但是每个跳过的条件不同,执行后发现只有用例test_sub_002没有跳过,当然我们代码中也是只有对用例4没有跳过。
也可以从执行结果中看到我们一共跳过了3条用例,以及每条都是怎么样进行跳过的
有小伙伴们要问了,这个只是跳过单个用例,那么我想跳过一个类中的所有用例呢?这还不简单?直接把装饰器放在class上面不就可以了。
import unittest
#减法运算
def add(a,b):
return a+b
#加法运算
def sub(a,b):
return a-b
# 测试用例类1
@unittest.skip("强制性跳过")
class TestDemo(unittest.TestCase):
#两个0相加
def test_add_001(self):
resp = add(0,0)
self.assertEqual(0,resp)
#两个正数相加
def test_add_002(self):
resp = add(1,1)
self.assertEqual(2,resp)
# 测试用例类2
@unittest.skipIf(True,"条件为真的时候跳过")
class TestDemo1(unittest.TestCase):
#两个0相减
def test_sub_001(self):
resp = sub(0,0)
self.assertEqual(0,resp)
#两个正数相减
def test_sub_002(self):
resp = sub(10,5)
self.assertEqual(5,resp)
if __name__ == '__main__':
unittest.main(verbosity=2)
通过执行结果发现已经把class中的四条用例全部都跳过了。
以上是关于python接口自动化-unittest跳过用例的主要内容,如果未能解决你的问题,请参考以下文章
Python Unittest - 根据不同测试环境跳过用例详解
Selenium2+python自动化70-unittest之跳过用例(skip)转载