http.py 974 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import json
  2. from typing import Literal
  3. import httpx
  4. import pytest
  5. from _pytest.monkeypatch import MonkeyPatch
  6. class MockedHttp:
  7. def httpx_request(method: Literal['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'],
  8. url: str, **kwargs) -> httpx.Response:
  9. """
  10. Mocked httpx.request
  11. """
  12. request = httpx.Request(
  13. method,
  14. url,
  15. params=kwargs.get('params'),
  16. headers=kwargs.get('headers'),
  17. cookies=kwargs.get('cookies')
  18. )
  19. data = kwargs.get('data', None)
  20. resp = json.dumps(data).encode('utf-8') if data else b'OK'
  21. response = httpx.Response(
  22. status_code=200,
  23. request=request,
  24. content=resp,
  25. )
  26. return response
  27. @pytest.fixture
  28. def setup_http_mock(request, monkeypatch: MonkeyPatch):
  29. monkeypatch.setattr(httpx, "request", MockedHttp.httpx_request)
  30. yield
  31. monkeypatch.undo()