From 635439325fa75ba8483fd0438329876839e8b51c Mon Sep 17 00:00:00 2001 From: Anna Khmelnitsky Date: Tue, 20 Dec 2016 18:53:41 -0800 Subject: [PATCH] Unit tests: Allow multiple responses in mocked client Sometimes function under test makes multiple calls to the backend, and being able to provide list of different responses would improve test coverage. Change-Id: I27a8cefe28287d25ed5411d44c6e2cc6f0a0701e --- vmware_nsxlib/tests/unit/v3/nsxlib_testcase.py | 18 +++++++++++++----- vmware_nsxlib/tests/unit/v3/test_resources.py | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/vmware_nsxlib/tests/unit/v3/nsxlib_testcase.py b/vmware_nsxlib/tests/unit/v3/nsxlib_testcase.py index 161dcfdc..6a25237a 100644 --- a/vmware_nsxlib/tests/unit/v3/nsxlib_testcase.py +++ b/vmware_nsxlib/tests/unit/v3/nsxlib_testcase.py @@ -223,7 +223,12 @@ class NsxClientTestCase(NsxLibTestCase): def __init__(self, session_response=None): super(NsxClientTestCase.MockHTTPProvider, self).__init__() - self._session_response = session_response + if isinstance(session_response, list): + self._session_responses = session_response + elif session_response: + self._session_responses = [session_response] + else: + self._session_responses = None def new_connection(self, cluster_api, provider): # wrapper the session so we can intercept and record calls @@ -246,12 +251,15 @@ class NsxClientTestCase(NsxLibTestCase): def _session_send(request, **kwargs): # calls at the Session level - if self._session_response: + if self._session_responses: + # pop first response + current_response = self._session_responses[0] + del self._session_responses[0] # consumer has setup a response for the session cluster_api.record_call(request, **kwargs) - return (self._session_response() - if hasattr(self._session_response, '__call__') - else self._session_response) + return (current_response() + if hasattr(current_response, '__call__') + else current_response) # bypass requests redirect handling for mock kwargs['allow_redirects'] = False diff --git a/vmware_nsxlib/tests/unit/v3/test_resources.py b/vmware_nsxlib/tests/unit/v3/test_resources.py index accc5bce..db7b46b6 100644 --- a/vmware_nsxlib/tests/unit/v3/test_resources.py +++ b/vmware_nsxlib/tests/unit/v3/test_resources.py @@ -197,7 +197,7 @@ class TestSwitchingProfileTestCase(nsxlib_testcase.NsxClientTestCase): session_response = mocks.MockRequestsResponse( 200, jsonutils.dumps(resp_resources)) mocked_resource = self._mocked_switching_profile( - session_response=session_response) + session_response=[session_response] * 3) self.assertEqual([{'display_name': 'resource-1'}], mocked_resource.find_by_display_name('resource-1'))