Python中10个常用的接口自动化装饰器

部署运行你感兴趣的模型镜像

更多Python学习内容:ipengtao.com

装饰器(Decorators)是Python中一种强大的编程工具,它们用于修改或增强函数或方法的行为。在接口自动化测试中,装饰器可以起到简化代码、提高代码可维护性和可重用性的作用。本文将介绍Python中的10个常用接口自动化装饰器,并提供详细的示例代码。

1. 日志记录装饰器

日志记录装饰器用于记录函数或方法的调用信息,包括输入参数和返回结果。这对于调试和排查问题非常有帮助。


def log_decorator(func):

    def wrapper(*args, **kwargs):

        result = func(*args, **kwargs)

        print(f"调用 {func.__name__},输入参数:{args}, 返回结果:{result}")

        return result

    return wrapper

使用示例:


@log_decorator

def add(a, b):

    return a + b


result = add(1, 2)

2. 超时装饰器

超时装饰器用于设置函数或方法的最大执行时间,防止长时间运行的接口自动化测试导致阻塞。


import timeout_decorator


@timeout_decorator.timeout(5)  # 设置最大执行时间为5秒

def test_interface():

    # 执行接口测试的代码

3. 重试装饰器

重试装饰器用于在函数或方法失败时自动重试,以增加接口自动化测试的稳定性。


import retrying


@retrying.retry(stop_max_attempt_number=3)  # 最多重试3次

def test_interface():

    # 执行接口测试的代码

4. 数据驱动装饰器

数据驱动装饰器用于通过不同的输入数据多次运行同一个测试用例,以增加测试覆盖率。


def data_driven(data_list):

    def decorator(func):

        def wrapper(*args, **kwargs):

            for data in data_list:

                result = func(*args, **kwargs, data)

                print(f"输入数据:{data}, 返回结果:{result}")

        return wrapper

    return decorator


data_list = [1, 2, 3, 4, 5]


@data_driven(data_list)

def test_interface(data):

    # 执行接口测试的代码,使用输入数据data

5. 缓存装饰器

缓存装饰器用于缓存函数或方法的结果,以减少重复计算,提高性能。


import functools


@functools.lru_cache(maxsize=None)  # 设置缓存大小为无限

def get_data_from_db(query):

    # 从数据库中获取数据的代码

6. 参数检查装饰器

参数检查装饰器用于检查函数或方法的输入参数是否符合预期,以提前发现错误。




def check_input_args(args_check):

    def decorator(func):

        def wrapper(*args, **kwargs):

            if args_check(*args, **kwargs):

                result = func(*args, **kwargs)

                return result

            else:

                raise ValueError("输入参数错误")

        return wrapper

    return decorator


def args_check(a, b):

    return isinstance(a, int) and isinstance(b, int)


@check_input_args(args_check)

def add(a, b):

    return a + b

7. 认证装饰器

认证装饰器用于在执行接口自动化测试前进行身份认证,以确保测试环境的安全性。




def authenticate(username, password):

    def decorator(func):

        def wrapper(*args, **kwargs):

            if check_credentials(username, password):

                result = func(*args, **kwargs)

                return result

            else:

                raise PermissionError("身份认证失败")

        return wrapper

    return decorator


def check_credentials(username, password):

    # 校验用户名和密码的代码


@authenticate("user", "password")

def test_interface():

    # 执行接口测试的代码

8. 计时装饰器

计时装饰器用于记录函数或方法的执行时间,以评估性能和优化代码。


import time


def timing_decorator(func):

    def wrapper(*args, **kwargs):

        start_time = time.time()

        result = func(*args, **kwargs)

        end_time = time.time()

        print(f"{func.__name__} 执行时间:{end_time - start_time}秒")

        return result

    return wrapper

使用示例:


@timing_decorator

def test_interface():

    # 执行接口测试的代码

9. 接口模拟装饰器

接口模拟装饰器用于模拟接口的返回数据,以便在开发和测试阶段使用。


def mock_interface(response_data):

    def decorator(func):

        def wrapper(*args, **kwargs):

            return response_data

        return wrapper

    return decorator


@mock_interface({"status": "success", "data": "mocked_data"})

def test_interface():

    # 执行接口测试的代码,将返回模拟的数据

10. 日志文件装饰器

日志文件装饰器用于将函数或方法的执行日志记录到文件中,以便后续分析和查看。


def log_to_file(log_file):

    def decorator(func):

        def wrapper(*args, **kwargs):

            result = func(*args, **kwargs)

            with open(log_file, "a") as file:

                file.write(f"{func.__name__} 执行结果:{result}\n")

            return result

        return wrapper

    return decorator

使用示例:


@log_to_file("test.log")

def test_interface():

    # 执行接口测试的代码,将执行结果记录到test.log文件中

总结

以上是Python中的10个常用接口自动化装饰器,它们可以简化接口测试代码、提高代码的可维护性和可重用性,并增加测试的稳定性和覆盖率。根据具体的需求和场景,可以选择合适的装饰器来优化接口自动化测试代码。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值