import json from typing import Literal import httpx import pytest from _pytest.monkeypatch import MonkeyPatch class MockedHttp: @staticmethod 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") 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()