Flask使用自定义标头测试放置请求

时间:2017-01-14 17:46:26

标签: python python-2.7 flask flask-restful flask-testing

我试图使用烧瓶测试客户端在我的Flask应用中测试PUT请求。 一切看起来都不错,但我一直得到400 BAD请求。

我使用POSTMAN尝试了相同的请求,然后我得到了回复。

这是代码

 from flask import Flask 
 app = Flask(__name__) 
 data = {"filename": "/Users/resources/rovi_source_mock.csv"}
 headers = {'content-type': 'application/json'}
 api = "http://localhost:5000/ingest"
 with app.test_client() as client:
    api_response = client.put(api, data=data, headers=headers)
 print(api_response)

输出

Response streamed [400 BAD REQUEST]

2 个答案:

答案 0 :(得分:6)

您确实需要将数据实际编码为JSON:

import json

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

data设置为字典会将其视为常规表单请求,因此如果您使用了任一内容类型,则每个键值对都会被编码为application/x-www-form-urlencodedmultipart/form-data内容。实际上,您的数据完全被忽略了。

答案 1 :(得分:1)

我认为仅使用json参数而不是data参数传递数据即可。

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

引用here

  

在测试客户端方法中传递json参数可设置请求   数据到JSON序列化的对象,并将内容类型设置为   application / json。