BillBie

导航

python 装饰器示例

 1 def wrapper_log(func):
 2     """
 3     无参装饰器,也可以写成有参装饰器,True或Flase标记是否调用日志模块
 4     功能一:执行失败,打印并记录错误日志信息,定位bug
 5     功能二:记录用例执行时间
 6     """
 7 
 8     from loguru import logger
 9     from functools import wraps
10     import time
11 
12     @wraps(func)  # wraps使inner装的更像一个func
13     def inner(*args, **kwargs):
14         logger.info(f'{func.__name__}开始执行')
15         now1 = time.time()
16 
17         try:
18             func(*args, **kwargs)
19         except Exception as e:
20             logger.error(f'执行失败,失败原因:{e}')
21             # logger.exception(e)
22             raise e
23 
24         now2 = time.time()
25         logger.success(f'{func.__name__}执行成功!!!,执行用时:{now2 - now1}ms')
26         return func
27 
28     return inner
29 
30 
31 @wrapper_log
32 def test_a():
33     print(1 / 0)
34 
35 
36 if __name__ == '__main__':
37     test_a()

 

posted on 2023-02-20 17:47  BillBie  阅读(11)  评论(0编辑  收藏  举报