我正在使用Robot框架进行api API测试。当我尝试使用方括号测试api时,没有考虑并得到错误的响应。而相同的api能够在POSTMAN中给出正确的响应。
我有以下API:https : //orbit.com/s2e/api/q1/client/?filter[customField.ID]=1003
当我击中POSTMAN时,我得到的答复是
"data": { "total_count": "1", "customer": [ { "id": "123" } ] }
在Robot框架中使用相同的API https://orbit.com/s2e/api/q1/client/?filter[customField.ID]=1003
"data": { "total_count": "0", "customer": [] }
然后,我看到了各种编码,发现使用%5B和%5D代替了[和],但该API在POSTMAN正常运行,但在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)
模块“ urllib”没有属性“ quote_plus”,此错误
您在使用python 3吗?
是的,python 3.7
我添加了新答案
@anj错误是因为操作系统(实际上是您的DNS)无法解析主机名。查看答案,您可能必须将完整的URL传递给了关键字-
https://orbit.com/s2e/etc
,对吗?如果是这样,则它也已对保留的字符进行url编码-/
。您只需要传递参数即可,或者需要重做此方法才能更智能。