在测试使用请求库的Python软件时,建议进行模拟requests.sessions.Session.request
。
不幸的是,在必须处理HTTP身份验证时,这种方法似乎无法很好地工作,我感觉我在请求中嘲笑了一个过高的抽象层。如何截取/模拟请求,这样我就不必自己处理身份验证(只需获取适当的标头)?
不要嘲笑Session
,使用Transport Adapter
。=)
该Session
对象会对请求进行大量处理,而在该级别上对其进行修补不会使您获得请求。
而是编写一个Transport Adapter
其send()
方法存储该PreparedRequest
对象的方法。
有关示例,请参见官方文档和我撰写的文章。但是,您需要这样的东西:
from requests.adapters import HTTPAdapter
class TestAdapter(HTTPAdapter):
"""
A Transport Adapter that stores all requests sent, and provides pre-canned responses.
"""
def __init__(self, responses):
self.responses = responses
self.requests = requests
def send(self, request, *args, **kwargs):
self.requests.append(request)
return self.responses.pop(0)
为了使它起作用,responses
需要提供urllib3.Response
对象列表或Requests可以使用的类似对象。TestAdapter.requests
将是requests.PreparedRequest
对象列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句