我的应用程序有很多调用请求方法(get,post,put,delete)。我想点击这些调用来打印出我的应用程序之外的所有调用的调试/跟踪信息。
我在venv中运行所有内容,所以一个明显的选择是去venv中的reqeusts模块并使用可以进行必要日志记录的函数来装饰4个方法。
还有另一种方法可以达到这个目的吗?
import requests
# do some magic to install a decorative method for requests.get
requests.get('http://google.com')
应该导致装饰器接到调用,这将进行必要的记录。
我查看了patch / flexmock / requests_mock,但似乎我需要提供该方法的替代实现。我需要的是一种装饰现有方法的方法。
答案 0 :(得分: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]>