|
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() |
|
|