【问题标题】:Flask Testing a put request with custom headersFlask 使用自定义标头测试 put 请求
【发布时间】:2017-05-29 21:56:44
【问题描述】:

我正在尝试使用烧瓶测试客户端在我的 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]

【问题讨论】:

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


    【解决方案1】:

    您确实需要将数据实际编码为 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 内容。事实上,您的数据会被完全忽略。

    【讨论】:

      【解决方案2】:

      我认为使用json 参数而不是data 参数传递数据更简单:

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

      引用here:

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

      【讨论】:

        猜你喜欢
        • 2013-08-18
        • 1970-01-01
        • 1970-01-01
        • 2014-11-17
        • 2023-03-21
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        相关资源
        最近更新 更多