Flask Testing a put request with custom headers Flask Testing a put request with custom headers flask flask

Flask Testing a put request with custom headers


You do need to actually encode the data to JSON:

import jsonwith app.test_client() as client:    api_response = client.put(api, data=json.dumps(data), headers=headers)

Setting data to a dictionary treats that as a regular form request, so each key-value pair would be encoded into application/x-www-form-urlencoded or multipart/form-data content, if you had used either content type. As it is, your data is entirely ignored instead.


I think it is simpler to just pass the data using the json parameter instead of the data parameter:

reponse = test_client.put(    api,     json=data,)

Quoting from here:

Passing the json argument in the test client methods sets the request data to the JSON-serialized object and sets the content type to application/json.