import json from typing import Literal import httpx import pytest from _pytest.monkeypatch import MonkeyPatch class MockedHttp: def httpx_request(method: Literal['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'], url: str, **kwargs) -> httpx.Response: """ Mocked httpx.request """ request = httpx.Request( method, url, params=kwargs.get('params'), headers=kwargs.get('headers'), cookies=kwargs.get('cookies') ) data = kwargs.get('data', None) resp = json.dumps(data).encode('utf-8') if data else b'OK' response = httpx.Response( status_code=200, request=request, content=resp, ) return response @pytest.fixture def setup_http_mock(request, monkeypatch: MonkeyPatch): monkeypatch.setattr(httpx, "request", MockedHttp.httpx_request) yield monkeypatch.undo()