mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-22 08:12:27 +00:00
Improve requests patching
This commit is contained in:
parent
15ab5f4c25
commit
dcaaa591b7
@ -3,6 +3,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from mock import patch, MagicMock
|
from mock import patch, MagicMock
|
||||||
|
|
||||||
|
from past.builtins import basestring
|
||||||
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
@ -15,13 +17,17 @@ def patch_requests(value, code=200):
|
|||||||
success = MagicMock()
|
success = MagicMock()
|
||||||
if isinstance(value, BaseModel):
|
if isinstance(value, BaseModel):
|
||||||
value = value.jsonld()
|
value = value.jsonld()
|
||||||
|
if not isinstance(value, basestring):
|
||||||
data = json.dumps(value)
|
data = json.dumps(value)
|
||||||
|
else:
|
||||||
|
data = value
|
||||||
|
|
||||||
success.json.return_value = value
|
success.json.return_value = value
|
||||||
success.data.return_value = data
|
|
||||||
success.status_code = code
|
|
||||||
|
|
||||||
success.content = json.dumps(value)
|
success.status_code = code
|
||||||
|
success.content = data
|
||||||
|
success.text = data
|
||||||
|
|
||||||
method_mocker = MagicMock()
|
method_mocker = MagicMock()
|
||||||
method_mocker.return_value = success
|
method_mocker.return_value = success
|
||||||
with patch.multiple('requests', request=method_mocker,
|
with patch.multiple('requests', request=method_mocker,
|
||||||
|
32
tests/test_test.py
Normal file
32
tests/test_test.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
from senpy.test import patch_requests
|
||||||
|
from senpy.models import Results
|
||||||
|
|
||||||
|
|
||||||
|
class TestTest(TestCase):
|
||||||
|
def test_patch_text(self):
|
||||||
|
with patch_requests('hello'):
|
||||||
|
r = requests.get('http://example.com')
|
||||||
|
assert r.text == 'hello'
|
||||||
|
assert r.content == 'hello'
|
||||||
|
|
||||||
|
def test_patch_json(self):
|
||||||
|
r = Results()
|
||||||
|
with patch_requests(r):
|
||||||
|
res = requests.get('http://example.com')
|
||||||
|
assert res.content == json.dumps(r.jsonld())
|
||||||
|
js = res.json()
|
||||||
|
assert js
|
||||||
|
assert js['@type'] == r['@type']
|
||||||
|
|
||||||
|
def test_patch_dict(self):
|
||||||
|
r = {'nothing': 'new'}
|
||||||
|
with patch_requests(r):
|
||||||
|
res = requests.get('http://example.com')
|
||||||
|
assert res.content == json.dumps(r)
|
||||||
|
js = res.json()
|
||||||
|
assert js
|
||||||
|
assert js['nothing'] == 'new'
|
Loading…
Reference in New Issue
Block a user