Как я могу издеваться над методами request.Session.send ()? - PullRequest
1 голос
/ 19 апреля 2019

Как я могу высмеять это? Я переопределил класс

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)

В тесте я хотел бы смоделировать метод отправки и использовать мои собственные результаты.

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_query метод self.send () пытается отправить данные. Я не хочу этого. Как издеваться над этим? Большая часть do_query является частью запросов. Запрос.

...