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中的四条用例全部都跳过了。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
接口自动化测试框架是一种用于管理和执行接口测试用的工具。Python语言结合pytest和requests库可以很方便地实现接口自动化测试框架。 首先,你需要安装pytest和requests库。可以使用以下命令安装它们: ``` pip install pytest pip install requests ``` 接下来,创建一个测试用文件,如`test_api.py`,并导入所需的库: ```python import pytest import requests ``` 然后,编写测试用函数。使用pytest的装饰器`@pytest.mark.parametrize`可以方便地实现参数化测试。 ```python @pytest.mark.parametrize("url, expected_status_code", [ ("https://api.example.com/users", 200), ("https://api.example.com/posts", 200), ("https://api.example.com/comments", 200), ]) def test_api(url, expected_status_code): response = requests.get(url) assert response.status_code == expected_status_code ``` 在上面的示中,我们定义了三个测试用函数,每个测试用函数都会发送一个GET请求并断言响应的状态码是否与期望的状态码一致。 最后,使用pytest命令来运行测试用: ``` pytest test_api.py ``` pytest会自动发现并执行所有以`test_`开头的函数作为测试用。 通过以上步骤,你就可以使用Python+pytest+requests构建一个简单的接口自动化测试框架,并使用unittest风格的方式管理测试用。当然,你还可以根据实际需求添加更多的功能,如报告生成、测试数据管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值