码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-12-07 22:44:44      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:self   res   time()   ima   function   ret   imp   测试的   for   

【引言】
我们经常需要多函数进行耗时测试,测试方法有许多,这里介绍装饰者的方法,提高耗时测试代码的可复用性,在其他方面的应用也是如此。
【设计原则】
类应该对扩展开放,对修改关闭。
【代码】
(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装饰者】在函数测试的作用

标签:self   res   time()   ima   function   ret   imp   测试的   for   

原文地址:http://www.cnblogs.com/guiguzhixing/p/6142919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!