Я создал класс RequestBuilder, который содержит все запросы, которые я делаю
class RequestBuilder():
def get(self, url: str):
try:
response = requests.get(url, headers=self._headers)
response.raise_for_status()
return response
except requests.exceptions.HTTPError as errh:
Logger.error("HTTP ERROR "+errh)
raise
except requests.exceptions.ConnectionError as errc:
Logger.error("CONNECTION ERROR "+errc)
raise
except requests.exceptions.Timeout as errt:
Logger.error("HTTP TIMOUT "+errt)
raise
except requests.exceptions.RequestException as err:
Logger.error("REQUEST ERROR "+err)
raise
Я хотел бы провести на нем модульные тесты с использованием модуля ответа, но покрытие не может пройти через последние 2 исключения:Timeout и RequestException
@responses.activate
def testRequestOK():
responses.add(responses.GET, 'http://sample.com', json={'status':'ok'}, status=200)
rb = RequestBuilder()
resp = rb.get('http://sample.com')
assert len(responses.calls) == 1
@responses.activate
def testRequestBuilderHTTPERROR():
responses.add(responses.GET, 'http://sample.com', json={'status':'no ok'}, status=501)
rb = RequestBuilder()
with pytest.raises(BaseException):
rb.get('http://sample.com')
@responses.activate
def testRequestBuilderHTTPERROR2():
responses.add(responses.GET, 'http://sample.com', json={'status':'no ok'}, status=403)
rb = RequestBuilder()
with pytest.raises(Exception):
rb.get('http://sample.com')
Как я могу имитировать Timeout и requestException?