Dotan Reis Dotan Reis - 1 month ago 4
Python Question

Create a functioning Response object

For testing purposes I'm trying to create a Response() object in python but it proves harder then it sounds.

i tried this:

from requests.models import Response

the_response = Response()
the_response.code = "expired"
the_response.error_type = "expired"
the_response.status_code = 400


but when I attempted
the_response.json()
i got an error because the function tries to get
len(self.content)
and
a.content
is null.
So I set
a._content = "{}"
but then I get an encoding error, so I have to change
a.encoding
, but then it fails to decode the content....
this goes on and on. Is there a simple way to create a Response object that's functional and has an arbitrary status_code and content?

Answer

That because the _content attribute on the Response objects (on python3) has to be bytes and not unicodes.

Here is how to do it:

from requests.models import Response

the_response = Response()
the_response.code = "expired"
the_response.error_type = "expired"
the_response.status_code = 400
the_response._content = b'{ "key" : "a" }'

print(the_response.json())
Comments