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