mirror of https://github.com/gsi-upm/senpy
Add *responses* to improve mocking
parent
a3eb8f196c
commit
7c7a815d1a
@ -1,36 +1,31 @@
|
|||||||
try:
|
|
||||||
from unittest.mock import patch, MagicMock
|
|
||||||
except ImportError:
|
|
||||||
from mock import patch, MagicMock
|
|
||||||
|
|
||||||
from past.builtins import basestring
|
from past.builtins import basestring
|
||||||
|
|
||||||
|
import os
|
||||||
import json
|
import responses as requestmock
|
||||||
from contextlib import contextmanager
|
|
||||||
|
|
||||||
from .models import BaseModel
|
from .models import BaseModel
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
MOCK_REQUESTS = os.environ.get('MOCK_REQUESTS', '').lower() in ['no', 'false']
|
||||||
def patch_requests(value, code=200):
|
|
||||||
success = MagicMock()
|
|
||||||
if isinstance(value, BaseModel):
|
|
||||||
value = value.jsonld()
|
|
||||||
if not isinstance(value, basestring):
|
|
||||||
data = json.dumps(value)
|
|
||||||
else:
|
|
||||||
data = value
|
|
||||||
|
|
||||||
success.json.return_value = value
|
def patch_all_requests(responses):
|
||||||
|
|
||||||
success.status_code = code
|
patched = requestmock.RequestsMock()
|
||||||
success.content = data
|
|
||||||
success.text = data
|
|
||||||
|
|
||||||
method_mocker = MagicMock()
|
for response in responses or []:
|
||||||
method_mocker.return_value = success
|
args = response.copy()
|
||||||
with patch.multiple('requests', request=method_mocker,
|
if 'json' in args and isinstance(args['json'], BaseModel):
|
||||||
get=method_mocker, post=method_mocker):
|
args['json'] = args['json'].jsonld()
|
||||||
yield method_mocker, success
|
args['method'] = getattr(requestmock, args.get('method', 'GET'))
|
||||||
assert method_mocker.called
|
patched.add(**args)
|
||||||
|
return patched
|
||||||
|
|
||||||
|
|
||||||
|
def patch_requests(url, response, method='GET', status=200):
|
||||||
|
args = {'url': url, 'method': method, 'status': status}
|
||||||
|
if isinstance(response, basestring):
|
||||||
|
args['body'] = response
|
||||||
|
else:
|
||||||
|
args['json'] = response
|
||||||
|
return patch_all_requests([args])
|
||||||
|
Loading…
Reference in New Issue