From 00fde1a1761121065d356abf296f79dcb9addc41 Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Wed, 2 Jul 2014 11:13:13 +1000 Subject: [PATCH] Always add request to history The request should be added to the history even if the matcher fails or an error occurs. Closes #1 --- requests_mock/adapter.py | 3 ++- requests_mock/tests/test_adapter.py | 33 +++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/requests_mock/adapter.py b/requests_mock/adapter.py index 799aafa..67ff73f 100644 --- a/requests_mock/adapter.py +++ b/requests_mock/adapter.py @@ -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) diff --git a/requests_mock/tests/test_adapter.py b/requests_mock/tests/test_adapter.py index b13eb85..f15ddae 100644 --- a/requests_mock/tests/test_adapter.py +++ b/requests_mock/tests/test_adapter.py @@ -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)