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?
Just use the responses library to do it for you: import responses @responses. activate def test_my_api(): responses. add(responses.
The response object is an instance of a javax. servlet. http. HttpServletResponse object. Just as the server creates the request object, it also creates an object to represent the response to the client.
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())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With