【问题标题】:How to make a POST (ReST) API in Robot framework with如何在机器人框架中使用 POST (ReST) API
【发布时间】:2014-02-14 04:47:01
【问题描述】:

我需要在 Robot Framework 中复制以下 API 调用:

curl -X POST "http://xyz/api/createApp" -H "Content-Type:application/json" -d @/tmp/testfile.json

testfile.json 有一个 json 有效负载。我无法将 Json 文件的内容作为正文发送。

我已经导入了 HTTP 库。但是看不到任何关键字来使用文件进行 API 调用。

【问题讨论】:

    标签: python http robotframework


    【解决方案1】:

    Bulkan 的机器人框架请求很好。但如果你能用更少的钱过日子,你可以像这样用几行代码来做你自己的本地 lib/posthttp.py:

    import requests
    import json
    
    def do_requests_post( url=None, data=None, headers={"Content-Type":"application/json"}):
        return requests.post( url, data=data, headers=json.loads(headers) )
    
    def do_requests_request( method="GET" url=None, data=None, headers={}):
        return requests.request( url, method=method, data=data, headers=json.loads(headers))
    

    请注意,返回对象是功能强大的“响应”,它具有.json()(如果将.text 感知为JSON,则返回一个字典)和.status_code(int)之类的成员函数。

    【讨论】:

    • 注意:1) 这个迷你库将cookies之类的东西留给了读者; 2)您不能直接从 RF 调用 Requests 的唯一原因是 RF 的自动魔术案例处理将 requests.Request 对象和 request.request() 函数混为一谈。
    【解决方案2】:

    http://bulkan.github.io/robotframework-requests/#Post 有文件参数。你可以做的是使用来自 OperatingSystem 库的 Get File 关键字并将其传递给你的 Post 关键字。

    【讨论】:

      【解决方案3】:

      当使用双反斜杠和引号时,它非常有效,例如:

      curl -i -H 'Accept: application/json' -H 'Content-Type: application/json' -X POST -d "{\"target\" : \"5142221345\",\"source\" : \"432567890\",\"messages\" : [ { \"format\" : \"AMR\", \"data\" : \"binarydata...\" } ]}" http://10.4.4.11:8089/v1/voice/add

      【讨论】:

      • 这太恶心了。将 JSON 括在单引号中,而不是转义所有双引号。
      猜你喜欢
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2018-04-01
      • 2019-01-04
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      相关资源
      最近更新 更多