我正在尝试使用 Robot 框架对几个 API 进行 api 测试。 当我尝试用方括号测试 api 时,它没有得到考虑并得到错误的响应。而相同的 api 能够在 POSTMAN 中给出正确的响应。
我有以下API: https://orbit.com/s2e/api/q1/client/?filter[customField.ID]=1003
当我点击邮递员时,我得到了有效的回复:
"data": {
"total_count": "1",
"customer": [
{
"id": "123" } ] }
相同的API https://orbit.com/s2e/api/q1/client/?filter[customField.ID]=1003在Robot框架中点击给出
"data": {
"total_count": "0",
"customer": [] }
然后我看到了各种编码,发现使用%5B和%5D而不是[和],但该API在邮递员中正常工作,但在robotframework中,它提供了所有数据,即过滤器不起作用。
https://orbit.com/s2e/api/q1/client/?filter%5BcustomField.ID%5D=1003 有人可以指导我吗?
尝试通过为 Robotframework 创建自定义库来编码 URL 路径。
对于Python V2
import urllib
def encodeUrlPath(s):
return urllib.quote_plus(s)
适用于 Python V3
import urllib.parse
def encodeUrlPath(s):
return urllib.parse.quote_plus(s)
也许问题不在于方括号,而在于等号。 由于您不分享您的机器人代码,因此很难知道您面临什么问题。
但是这里有两个对包含方括号的 URL 执行基本 GETS 的实现。请注意,我在
\
之前使用了反斜杠 (=
),否则它被视为命名参数。
requests
库实现:
*** Settings ***
Library requests
*** Test Case ***
mytest
${response} = requests.get https://postman-echo.com/get?foo1\=[bar1]&foo2\=bar2
Log To Console ${response.json()}
RequestsLibrary
库实现:
*** Settings ***
Library RequestsLibrary
*** Test Case ***
mytest
Create Session postman_echo https://postman-echo.com
${response} = Get Request postman_echo /get?foo1\=[bar1]&foo2\=bar2
Log To Console ${response.json()}
我对 POST 请求也有同样的问题(我的请求包含方括号)。 基本思想:我对大括号使用“创建字典”关键字,对方括号使用“创建列表”。
${customerInternal} Create Dictionary id=${id}
${customer} Create List ${customerInternal}
${data} Create Dictionary totalcount=${totalcount} customer=${customer}
${body} Create Dictionary data=${data}
${body} Evaluate json.dumps(${body}) json
${header}= Create Dictionary Content-Type=application/json