如何测试每个请求的异常

我创建了一个包含所有我执行的请求的RequestBuilder类

SELECT c.FullName,COUNT(l.Id) 
FROM Organisations c
JOIN UsersTable u ON u.OrganisationId = c.Id
LEFT JOIN LoginsTable l ON u.Email = l.Email AND l.AttemptTime > "2019-10-01" AND l.AttemptTime < "2019-11-01" AND l.Success = 1 
GROUP BY c.FullName
ORDER BY c.FullName

我想使用响应模块对其进行单元测试,但是覆盖范围无法通过最后两个异常:Timeout和RequestException

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

如何模拟超时和requestException?

myqq519334668 回答:如何测试每个请求的异常

通过模拟不同的异常解决:

from utils.requestBuilder import RequestBuilder
import responses

import requests

from requests import exceptions as request_exception
import pytest
import mock
def testGetExceptionTimeout():
    with mock.patch('requests.get',side_effect=request_exception.Timeout('Failed Request')) as mock_request_post:
        rb = RequestBuilder()
        with pytest.raises(Exception):
            rb.get('http://sample.com')

def testGetExceptionRequestException():
    with mock.patch('requests.get',side_effect=request_exception.RequestException('Failed Request')) as mock_request_post:
        rb = RequestBuilder()
        with pytest.raises(Exception):
            rb.get('http://sample.com')
本文链接:https://www.f2er.com/3160917.html

大家都在问