6 import requests.sessions
10 def can_dump_request_to_file(method):
12 def dump_preparedrequest(request, **kwargs):
13 parseresult = urlparse.urlparse(request.url)
14 if parseresult.scheme == "file":
16 os.makedirs(parseresult.path)
18 if e.errno != errno.EEXIST:
20 with open(os.path.join(parseresult.path, 'dump.txt'), 'a') as f:
22 for key in request.headers:
23 headers += key + " " + request.headers[key] + "\n"
24 message = "{} {}\n{}\n{}\n\n\n".format(
25 request.method, request.url, headers, request.body)
29 def patch_request(method, url, **kwargs):
30 with requests.sessions.Session() as session:
31 parseresult = urlparse.urlparse(url)
32 if parseresult.scheme == "file":
33 with mock.patch.object(
34 session, 'send', side_effect=dump_preparedrequest):
35 return session.request(method=method, url=url, **kwargs)
37 return session.request(method=method, url=url, **kwargs)
39 def hook(*args, **kwargs):
40 with mock.patch('requests.api.request', side_effect=patch_request):
41 return method(*args, **kwargs)