嘲笑第三方api调用并修补它们以测试api调用。
@mock.patch('payments.tests.stripe_mock.StripeWrapper.add_card')
@mock.patch('payments.tests.stripe_mock.StripeWrapper.get_customer')
def test_card_1(self, _mock_customer, _mock_card):
post_data = {"number": 1233}
response = self.client.post(reverse("card-list"), data=post_data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
api调用工作正常,但是当api调用发送响应时它会抛出错误。
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 1298, in patched
return func(*args, **keywargs)
File "/home/naveen/WIP/automaticfleet/payments/tests/test_views.py", line 535, in test_create_card_4
response = self.client.post(reverse("card-list"), data=post_data)
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/test.py", line 168, in post
path, data=data, format=format, content_type=content_type, **extra)
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/test.py", line 90, in post
return self.generic('POST', path, data, content_type, **extra)
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/compat.py", line 189, in generic
return self.request(**r)
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/test.py", line 157, in request
return super(APIClient, self).request(**kwargs)
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/test.py", line 109, in request
request = super(APIRequestFactory, self).request(**kwargs)
File "/home/aws/local/lib/python2.7/site-packages/django/test/client.py", line 440, in request
six.reraise(*exc_info)
File "/home/aws/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 137, in get_response
response = response.render()
File "/home/naveen/ENV/automaticfleet/local/lib/python2.7/site-packages/django/template/response.py", line 103, in render
self.content = self.rendered_content
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/response.py", line 59, in rendered_content
ret = renderer.render(self.data, media_type, context)
File "/home/aws/local/lib/python2.7/site-packages/rest_framework/renderers.py", line 98, in render
separators=separators
File "/usr/lib/python2.7/json/__init__.py", line 250, in dumps
sort_keys=sort_keys, **kw).encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/home/naveen/ENV/automaticfleet/local/lib/python2.7/site-packages/rest_framework/utils/encoders.py", line 51, in default
return obj.tolist()
File "/home/naveen/ENV/automaticfleet/local/lib/python2.7/site-packages/mock/mock.py", line 1055, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "/home/naveen/ENV/automaticfleet/local/lib/python2.7/site-packages/mock/mock.py", line 1127, in _mock_call
ret_val = self.return_value
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 1055, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "/home/naveen/ENV/automaticfleet/local/lib/python2.7/site-packages/mock/mock.py", line 1127, in _mock_call
ret_val = self.return_value
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 611, in __get_return_value
_new_parent=self, _new_name='()'
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 1011, in _get_child_mock
return klass(**kw)
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 1953, in __init__
_safe_super(MagicMixin, self).__init__(*args, **kw)
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 1043, in __init__
self.side_effect = side_effect
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 814, in __setattr__
return object.__setattr__(self, name, value)
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 656, in __set_side_effect
self._mock_side_effect = value
File "/home/aws/local/lib/python2.7/site-packages/mock/mock.py", line 814, in __setattr__
return object.__setattr__(self, name, value)
RuntimeError: maximum recursion depth exceeded while calling a Python object