Python装饰者在函数测试的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python装饰者在函数测试的作用相关的知识,希望对你有一定的参考价值。

【引言】
我们经常需要多函数进行耗时测试,测试方法有许多,这里介绍装饰者的方法,提高耗时测试代码的可复用性,在其他方面的应用也是如此。
【设计原则】
类应该对扩展开放,对修改关闭。
【代码】
(1)定义装饰者具体方法
#encoding: UTF-8
‘‘‘
Created on 2016??12??7??
@filename: test.py
@author: YYH
‘‘‘
import time
from functools import wraps
 
class TimeRecorder:
def __init__(self, name="function"):
print(name +"()"+ " Start...")
print(name +"()"+ " Running...")
self.name = name
self.startTime = time.time()
def __del__(self):
print("{0}() Ended,Cost Time:{1} s".format(self.name, time.time() - self.startTime))
#使用装饰者测试函数运行时间,这里看起来像是“钩子”的方法,实际并不是的,借助于Python的装饰者,这个方法将发挥巨大的作用。
def fn_timer(function):
@wraps(function) #解决打印函数名的bug
def function_timer(*args, **kwargs):
tR=TimeRecorder(function.__name__) #增加变量,由使得该对象的生命器存在整个函数
result = function(*args, **kwargs)
return result
return function_timer

 

(2)定义装饰者(该方法就就具有fn_timer的“能力”)
技术分享
(3)使用装饰者
技术分享
(4)结果
技术分享

以上是关于Python装饰者在函数测试的作用的主要内容,如果未能解决你的问题,请参考以下文章

Python学习 :装饰器

1.16 Python基础知识 - 装饰器

python使用上下文对代码片段进行计时,非装饰器

python函数_装饰器

python--装饰器

python装饰器