Я пытаюсь проверить код состояния ответа после запуска некоторого API с помощью метода POST. Код состояния ответа относится к типу экземпляра Magicmock, я проверяю, находится ли код состояния между 400 и 500, используя оператор сравнения, который работает в python 2но вызывает TypeError в python 3
import mock
response = <MagicMock name='Session().post()' id='130996186'>
Ниже код работает в python 2
if (400 <= response.status_code <= 500):
print('works')
Но при выполнении в python 3 возникает
TypeError: '<='не поддерживается между экземплярами int и MagicMock </h1> класс BMRAPI (объект): root_url = нет def __init__(self, user, api_key, root_url=BMR_URL,
api_uri=RESULTS_API_URI):
self.log =
logging.getLogger("BMRframework.Reporting.BMR6.BMRAPI")
self.root_url = root_url
self.url = urljoin(root_url, api_uri)
self.log.info("Connecting to BMR REST API: %s" % self.url)
self.session = requests.Session()
auth = 'ApiKey {0}:{1}'.format(user, api_key)
self.session.headers.update({
'Content-type': 'application/json',
'Accept': 'text/plain',
'Authorization': auth})
self.session.trust_env = False # bypass the proxy
self.log.debug("Authenticating as: %s" % user)
self.log.debug("Using API Key: %s" % api_key)`enter code here`
self.log.info("Connection to REST API successful")
def url_for_resource(self, resource_name):
return urljoin(self.url, resource_name) + "/"
def create(self, resource_name, data):
response = self.session.post(self.url_for_resource(resource_name),
json.dumps(data), timeout=TIMEOUT)
return self.handle_response(response)
def handle_response(self, response):
if (400 <= response.status_code <= 500):
print('mars')
Ниже приведен тестовый блок UNIT
@mock.patch("requests.Session")
def BMRAPI(Session):
api = BMRAPI('http://1.2.3.4/', 'dummy_user', '12345')
data = {'hello': 123}
api.create('testresource', data)