使用 Karate 框架发送嵌套 JSON 作为验证 POST REST API 方法的请求时出现问题
Getting issue while sending nested JSON as request to validate the POST REST API method using Karate framework
请注意,我正在尝试发送以下请求并使用 url
在 POST 方法上验证响应
http://uat-ws.*.uk.***.ws/index.php/*/****/validatevoucher
像下面这样:我在这里使用空手道框架来自动化 REST API
Scenario: validate voucher
Given url 'http://-..uk../v3//******'
And header Content-Type = 'application/json'
And request {json request here}
When method post
Then status 200
12:17:30.510 [main] DEBUG com.intuit.karate.StepDefs - response time in milliseconds: 579 12:17:30.528 [main] ERROR com.intuit.karate.StepDefs - FAILED, status code was 400, expected 200
[31mFailed scenarios:[0m [31mexamples/users/WSS.feature:3 [0m# Scenario: validate voucher
1 Scenarios ([31m1 failed[0m) 5 Steps ([31m1 failed[0m, [32m4 passed[0m) 0m3.516s
com.intuit.karate.KarateException: status code was 400, expected 200 at com.intuit.karate.StepDefs.handleFailure(StepDefs.java:516) at com.intuit.karate.StepDefs.status(StepDefs.java:447) at ✽.Then status 200(examples/users/WSS.feature:9)
从错误中可以很清楚地看出请求正在命中服务器,但服务器以 400 响应。空手道测试工作正常,但看起来服务器期待其他 JSON或内容类型。
我的建议是寻求可以查看服务器日志的人的帮助,找出服务器抛出 400 的原因。
编辑:重新阅读您的问题后,我猜您正试图形成一个嵌套 JSON。是的,您试图在脚本中使用的 JSON 是错误的。你能试试这个吗?由于您隐藏了很多实际请求,因此很难看出问题所在。请熟悉 JSON 以及如何创建嵌套 JSON,如下例所示。
And request
"""
{
memberId: '******',
memberIpAddress: '******',
voucherData: {
blabla: {
voucherNo: '*****',
voucherValue: '***',
voucherIssueDate': '',
voucherExpiryDate: '******'
}
}
}
"""
请注意,我正在尝试发送以下请求并使用 url
在 POST 方法上验证响应http://uat-ws.*.uk.***.ws/index.php/*/****/validatevoucher
像下面这样:我在这里使用空手道框架来自动化 REST API
Scenario: validate voucher
Given url 'http://-..uk../v3//******'
And header Content-Type = 'application/json'
And request {json request here}
When method post
Then status 200
12:17:30.510 [main] DEBUG com.intuit.karate.StepDefs - response time in milliseconds: 579 12:17:30.528 [main] ERROR com.intuit.karate.StepDefs - FAILED, status code was 400, expected 200
[31mFailed scenarios:[0m [31mexamples/users/WSS.feature:3 [0m# Scenario: validate voucher
1 Scenarios ([31m1 failed[0m) 5 Steps ([31m1 failed[0m, [32m4 passed[0m) 0m3.516s
com.intuit.karate.KarateException: status code was 400, expected 200 at com.intuit.karate.StepDefs.handleFailure(StepDefs.java:516) at com.intuit.karate.StepDefs.status(StepDefs.java:447) at ✽.Then status 200(examples/users/WSS.feature:9)
从错误中可以很清楚地看出请求正在命中服务器,但服务器以 400 响应。空手道测试工作正常,但看起来服务器期待其他 JSON或内容类型。
我的建议是寻求可以查看服务器日志的人的帮助,找出服务器抛出 400 的原因。
编辑:重新阅读您的问题后,我猜您正试图形成一个嵌套 JSON。是的,您试图在脚本中使用的 JSON 是错误的。你能试试这个吗?由于您隐藏了很多实际请求,因此很难看出问题所在。请熟悉 JSON 以及如何创建嵌套 JSON,如下例所示。
And request
"""
{
memberId: '******',
memberIpAddress: '******',
voucherData: {
blabla: {
voucherNo: '*****',
voucherValue: '***',
voucherIssueDate': '',
voucherExpiryDate: '******'
}
}
}
"""