Always add request to history

The request should be added to the history even if the matcher fails or
an error occurs.

Closes #1
This commit is contained in:
Jamie Lennox
2014-07-02 11:13:13 +10:00
parent 96d8dfbcf5
commit 00fde1a176
2 changed files with 29 additions and 7 deletions

View File

@@ -233,10 +233,11 @@ class Adapter(BaseAdapter):
self.request_history = []
def send(self, request, **kwargs):
self.request_history.append(request)
for matcher in reversed(self._matchers):
response = matcher(request)
if response is not None:
self.request_history.append(request)
return response
raise exceptions.NoMockAddress(request)

View File

@@ -15,11 +15,9 @@ import re
import requests
import six
from requests_mock import adapter
import requests_mock
from requests_mock.tests import base
ANY = adapter.ANY
class SessionAdapterTests(base.TestCase):
@@ -28,7 +26,7 @@ class SessionAdapterTests(base.TestCase):
def setUp(self):
super(SessionAdapterTests, self).setUp()
self.adapter = adapter.Adapter()
self.adapter = requests_mock.Adapter()
self.session = requests.Session()
self.session.mount(self.PREFIX, self.adapter)
@@ -277,14 +275,14 @@ class SessionAdapterTests(base.TestCase):
text=5)
def test_with_any_method(self):
self.adapter.register_uri(ANY, self.url, text='resp')
self.adapter.register_uri(requests_mock.ANY, self.url, text='resp')
for m in ('GET', 'HEAD', 'POST', 'UNKNOWN'):
resp = self.session.request(m, self.url)
self.assertEqual('resp', resp.text)
def test_with_any_url(self):
self.adapter.register_uri('GET', ANY, text='resp')
self.adapter.register_uri('GET', requests_mock.ANY, text='resp')
for u in ('mock://a', 'mock://b', 'mock://c'):
resp = self.session.get(u)
@@ -296,3 +294,26 @@ class SessionAdapterTests(base.TestCase):
for u in ('mocK://www.tester.com/a', 'mock://abc.tester.com'):
resp = self.session.get(u)
self.assertEqual('resp', resp.text)
def test_requests_in_history_on_no_match(self):
self.assertRaises(requests_mock.NoMockAddress,
self.session.get,
self.url)
self.assertEqual(self.url, self.adapter.last_request.url)
def test_requests_in_history_on_exception(self):
class MyExc(Exception):
pass
def _test_cb(request, ctx):
raise MyExc()
self.adapter.register_uri('GET', self.url, text=_test_cb)
self.assertRaises(MyExc,
self.session.get,
self.url)
self.assertEqual(self.url, self.adapter.last_request.url)