mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-08 16:53:23 +00:00
make cassettes human readable
This commit is contained in:
committed by
Jair Henrique
parent
dbf7a3337b
commit
db1e9e7180
@@ -285,3 +285,29 @@ def test_stream(tmpdir, httpbin, do_request):
|
||||
assert cassette_content == response_content
|
||||
assert len(cassette_content) == 512
|
||||
assert cassette.play_count == 1
|
||||
|
||||
@pytest.mark.online
|
||||
def test_text_content_type(tmpdir, httpbin, do_request):
|
||||
url = httpbin.url + "/json"
|
||||
|
||||
with vcr.use_cassette(str(tmpdir.join("json_type.yaml"))):
|
||||
response = do_request()("GET", url)
|
||||
|
||||
with vcr.use_cassette(str(tmpdir.join("json_type.yaml"))) as cassette:
|
||||
cassette_response = do_request()("GET", url)
|
||||
assert cassette_response.content == response.content
|
||||
assert cassette.play_count == 1
|
||||
assert isinstance(cassette.responses[0]['content'], str)
|
||||
|
||||
@pytest.mark.online
|
||||
def test_binary_content_type(tmpdir, httpbin, do_request):
|
||||
url = httpbin.url + "/bytes/1024"
|
||||
|
||||
with vcr.use_cassette(str(tmpdir.join("json_type.yaml"))):
|
||||
response = do_request()("GET", url)
|
||||
|
||||
with vcr.use_cassette(str(tmpdir.join("json_type.yaml"))) as cassette:
|
||||
cassette_response = do_request()("GET", url)
|
||||
assert cassette_response.content == response.content
|
||||
assert cassette.play_count == 1
|
||||
assert isinstance(cassette.responses[0]['content'], bytes)
|
||||
@@ -33,12 +33,18 @@ def _transform_headers(httpx_response):
|
||||
return out
|
||||
|
||||
|
||||
|
||||
def _to_serialized_response(httpx_response):
|
||||
try:
|
||||
content = httpx_response.content.decode("utf-8")
|
||||
except UnicodeDecodeError:
|
||||
content = httpx_response.content
|
||||
|
||||
return {
|
||||
"status_code": httpx_response.status_code,
|
||||
"http_version": httpx_response.http_version,
|
||||
"headers": _transform_headers(httpx_response),
|
||||
"content": httpx_response.content,
|
||||
"content": content,
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +64,8 @@ def _from_serialized_headers(headers):
|
||||
@patch("httpx.Response.read", MagicMock())
|
||||
def _from_serialized_response(request, serialized_response, history=None):
|
||||
content = serialized_response.get("content")
|
||||
if isinstance(content, str):
|
||||
content = content.encode("utf-8")
|
||||
response = httpx.Response(
|
||||
status_code=serialized_response.get("status_code"),
|
||||
request=request,
|
||||
|
||||
Reference in New Issue
Block a user