Как вызвать ошибку, если URL-адрес был получен, но не зарегистрирован в python-ответах?

По умолчанию Response выдаст ошибку подтверждения, если URL был зарегистрирован, но к нему не обращались. Как можно сделать обратное, то есть вызвать ошибку, если URL был получен, но не зарегистрирован?

1 ответ

Решение

Если вы запросите URL, который не был зарегистрирован, вы получите

requests.exceptions.ConnectionError

пример

import responses
import requests

@responses.activate
def test_my_api():
    resp = requests.get('https://twitter.com/')
    print resp

def run_my_api():
    resp = requests.get('https://twitter.com/')
    print resp

if __name__ == '__main__':
    print "Without responses..."
    run_my_api()
    print ""
    print "With responses..."
    test_my_api()

Выход

Without responses...
<Response [200]>

With responses...
Traceback (most recent call last):
  File "example.py", line 18, in <module>
    test_my_api()
  File "<string>", line 3, in wrapper
  File "example.py", line 6, in test_my_api
    resp = requests.get('https://twitter.com/')
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/responses.py", line 294, in unbound_on_send
    return self._on_request(adapter, request, *a, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/responses.py", line 239, in _on_request
    raise response
requests.exceptions.ConnectionError: Connection refused: GET https://twitter.com/

<Response [200]> от неукрашенного run_my_api вызов. Ты можешь использовать assertRaises или эквивалент для проверки на исключение.

Другие вопросы по тегам