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跳过用例

Python Unittest - 根据不同测试环境跳过用例详解

Selenium2+python自动化70-unittest之跳过用例(skip)转载

unittest---unittest跳过用例

python unittest--TestCase类总结4,skip跳过用例或者跳过测试类

httprunner学习19-跳过用例skip/skipIf/skipUnless