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

发布于:2025-02-12 ⋅ 阅读:(181) ⋅ 点赞:(0)

更多Python学习内容:ipengtao.com

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

1. 日志记录装饰器

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


  1. def log_decorator(func):

  2.     def wrapper(*args, **kwargs):

  3.         result = func(*args, **kwargs)

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

  5.         return result

  6.     return wrapper

使用示例:


  1. @log_decorator

  2. def add(a, b):

  3.     return a + b

  4. result = add(1, 2)

2. 超时装饰器

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


  1. import timeout_decorator

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

  3. def test_interface():

  4.     # 执行接口测试的代码

3. 重试装饰器

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


  1. import retrying

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

  3. def test_interface():

  4.     # 执行接口测试的代码

4. 数据驱动装饰器

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


  1. def data_driven(data_list):

  2.     def decorator(func):

  3.         def wrapper(*args, **kwargs):

  4.             for data in data_list:

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

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

  7.         return wrapper

  8.     return decorator

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

  10. @data_driven(data_list)

  11. def test_interface(data):

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

5. 缓存装饰器

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


  1. import functools

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

  3. def get_data_from_db(query):

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

6. 参数检查装饰器

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


  1. def check_input_args(args_check):

  2.     def decorator(func):

  3.         def wrapper(*args, **kwargs):

  4.             if args_check(*args, **kwargs):

  5.                 result = func(*args, **kwargs)

  6.                 return result

  7.             else:

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

  9.         return wrapper

  10.     return decorator

  11. def args_check(a, b):

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

  13. @check_input_args(args_check)

  14. def add(a, b):

  15.     return a + b

7. 认证装饰器

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


  1. def authenticate(username, password):

  2.     def decorator(func):

  3.         def wrapper(*args, **kwargs):

  4.             if check_credentials(username, password):

  5.                 result = func(*args, **kwargs)

  6.                 return result

  7.             else:

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

  9.         return wrapper

  10.     return decorator

  11. def check_credentials(username, password):

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

  13. @authenticate("user", "password")

  14. def test_interface():

  15.     # 执行接口测试的代码

8. 计时装饰器

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


  1. import time

  2. def timing_decorator(func):

  3.     def wrapper(*args, **kwargs):

  4.         start_time = time.time()

  5.         result = func(*args, **kwargs)

  6.         end_time = time.time()

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

  8.         return result

  9.     return wrapper

使用示例:


  1. @timing_decorator

  2. def test_interface():

  3.     # 执行接口测试的代码

9. 接口模拟装饰器

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


  1. def mock_interface(response_data):

  2.     def decorator(func):

  3.         def wrapper(*args, **kwargs):

  4.             return response_data

  5.         return wrapper

  6.     return decorator

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

  8. def test_interface():

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

10. 日志文件装饰器

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


  1. def log_to_file(log_file):

  2.     def decorator(func):

  3.         def wrapper(*args, **kwargs):

  4.             result = func(*args, **kwargs)

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

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

  7.             return result

  8.         return wrapper

  9.     return decorator

使用示例:


  1. @log_to_file("test.log")

  2. def test_interface():

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

总结

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

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


网站公告

今日签到

点亮在社区的每一天
去签到