zjowowen's picture
init space
079c32c
raw
history blame
1.56 kB
import json
from contextlib import contextmanager
from typing import Optional, Mapping, Any
import pytest
import requests
import responses
from requests import HTTPError
class _HTTPErrorGenerator:
@classmethod
def _generate_exception(
cls, code: int, message: str, data: Optional[Mapping[str, Any]] = None, success: bool = False
):
@contextmanager
def _yield_func():
with responses.RequestsMock(assert_all_requests_are_fired=False) as rsp:
rsp.add(
**{
'method': responses.GET,
'url': 'http://example.com/path',
'body': json.dumps(
{
"success": not not success,
"code": int(code),
"message": str(message),
"data": data or {},
}
),
'status': 400,
'content_type': 'application/json',
}
)
yield
@responses.activate
def _get_exception():
try:
with _yield_func():
response = requests.get('http://example.com/path')
response.raise_for_status()
except HTTPError as err:
return err
else:
pytest.fail('Should not reach here.')
return _get_exception()