【发布时间】:2021-09-14 17:23:52
【问题描述】:
我知道有很多类似的问题可用,但没有一个有效。 有人可以告诉我下面的测试用例是否有任何语法错误
Create Token
Create Session testsession ${baseUrl} verify=true
${body}= create dictionary clientId=unittest.cc.client clientSecret=RyDQ$xxxxxRtv
${header}= create dictionary Content-Type=application/json
${resp}= POST On Session testsession ${reqUri} json=${body} headers=${header} params=${ApiKeyParameter}
${source data}= Evaluate json.loads("""${resp.content}""") json
${token}= Set Variable ${source data['accessToken']}
#No errors Uptill this much - Bearer token creation was successful after that getting error while using it
${header}= create dictionary Authorization=${tpre} ${token} Content-Type=application/json cookies=ss-id=KF84fFy4txxxxxxxxx76i; ss-pid=StDTDxxxxxxxxxxxxn7r
${body}= get file API/data.txt
log to console ${header}
${resp}= post on session testsession /orders json=${body} headers=${header}
log to console ${resp.status_code}
问题是每次我运行测试时都会收到 400 错误。下面是 POSTMAN 提供的 Python 代码和使用的标头的屏幕截图。现在我不确定如何在我的 python 或机器人框架中获取 HOST 标头。 如果需要任何其他详细信息,请告诉我。完成获取或发布请求时,我不确定 URL 格式中的标头 有什么办法可以查到吗?
import requests
import JSON
url = "https://domain:10001/orders?format=json"
payload = json.dumps({ Can ignore this part
})
headers = {
'Authorization': 'Bearer xxx',
'Content-Type': 'application/json',
'Cookie': 'ss-id=xxx; ss-pid=xxx'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
【问题讨论】:
-
这一切都在您发送到服务器的实际数据中 - 标头和有效负载,这是您在问题中跳过的部分。错误 400 表示服务器对该数据“不满意”,它存在问题;最简单的方法是检查服务器的日志,如果它写了拒绝的原因。
${tpre}的值是多少 - 它应该是字符串 Bearer,您可能想直接使用它,而不是 var。您确定该 txt 文件的内容是正确的 json 字符串吗?如果不是,那将是服务器拒绝请求的另一个原因。 -
我猜是这个:
clientId=unittest.cc.client。您将 clientid 设置为文字字符串“unitest.cc.client”。 -
@TodorMinakov 这是一个不记名令牌,所以我为变量
${tpre}分配了一个“不记名”的预值 -
@BryanOakley 是的,这可能是感谢您指出的原因之一,让我检查一次。再一次,正如 TodorMinakov 所说,正文可能是让我检查响应内容的原因之一,肯定有错误消息。很快就会回来。
-
@TodorMinakov 由于一些额外的空间,错误出现在正文的格式中。感谢您指出了这一点。布莱恩奥克利也谢谢你:)
标签: api postman robotframework