Python 如何模拟requests.Session.send()方法?
我怎么能嘲笑它?我已经超越了阶级Python 如何模拟requests.Session.send()方法?,python,mocking,python-requests,Python,Mocking,Python Requests,我怎么能嘲笑它?我已经超越了阶级 from requests import Session class MySession(Session): def __init__(self, *args, **kwargs): super(MySession).__init__(*args, **kwargs) ... def do_query(self, *args, **kwargs): ... # some preparation
from requests import Session
class MySession(Session):
def __init__(self, *args, **kwargs):
super(MySession).__init__(*args, **kwargs)
...
def do_query(self, *args, **kwargs):
...
# some preparation
req = Request(
method=method.upper(),
url=url,
headers=headers,
files=files,
data=data,
json=json,
params=params,
auth=auth,
cookies=None,
hooks=None,
)
prepared = self.prepare_request(req)
settings = self.merge_environment_settings(
prepared.url, {}, stream, check_ssl, None
)
send_kwargs = {
'timeout': timeout,
'allow_redirects': True,
}
send_kwargs.update(settings)
resp = self.send(prep, **send_kwargs)
在测试中,我想模拟send方法并使用我自己的结果
class FakeResult(object):
def __init__(self):
self.status_code = 200
self.url = 'http://127.0.0.1/test_url'
self.content = 'content'
class TestFilter(unittest.TestCase):
@mock.patch('requests.Session.send')
def test_test(self, session_mock):
session_mock.return_value = FakeResult()
req = CatchData('test')
s = MySession()
# Here the problem
s.do_query(req)
在do_查询中,方法self.send()尝试发送数据。我不要这个。如何嘲笑它?do_查询的许多部分是requests.Request的一部分。您可能会更喜欢库。您可能会更喜欢库。