2017-06-26 166 views
0

我的应用程序的现有方法有许多调用请求方法(GET,POST,PUT,删除)。我想要点击这些调用来打印出我的应用程序中所有调用的调试/跟踪信息。蟒蛇:装饰模块

我跑VENV里面的一切,所以一个显而易见的选择是去在VENV的模块多个请求和装饰4种方法有,可以做必要的记录功能。

是否有另一种方法来实现这一目标?

import requests 

# do some magic to install a decorative method for requests.get 

requests.get('http://google.com') 

应该会导致装饰器获取将进行必要日志记录的调用。

我看着贴片/ flexmock/requests_mock但现在看来,我需要提供替代的实施该方法。我需要的是一种装饰现有方法的方法。

+0

'requests.get =饰(requests.get)'? – smarx

+0

作品。谢谢 ! – Bhakta0007

+0

FWIW,要求有一个[事件框架(http://docs.python-requests.org/en/master/user/advanced/#event-hooks),所以你不需要猴补丁 –

回答

0

装饰器仅仅是返回另一个功能的功能:

def decorator(f): 
    def inner(*args, **kwargs): 
     print(args, kwargs) 
     return f(*args, **kwargs) 
    return inner 

requests.get = decorator(requests.get) 
requests.get('http://google.com') 

(('http://google.com',), {}) 
<Response [200]>