3

请注意,我正在尝试发送以下请求并使用 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)
4

1 回答 1

2

从错误中可以清楚地看出请求正在访问服务器,但服务器以 400 响应。空手道测试工作正常,但看起来服务器期待其他 JSON 或内容类型。

我的建议是寻求可以查看服务器日志的人的帮助,找出服务器抛出 400 的原因。

编辑:重新阅读您的问题后,我猜您正在尝试形成嵌套的 JSON。是的,您尝试在脚本中使用的 JSON 是错误的。你能试试这个。由于您隐藏了很多实际请求,因此很难看到问题。请熟悉 JSON 以及如何创建嵌套 JSON,如下例所示。

And request
"""
{ 
  memberId: '******', 
  memberIpAddress: '******', 
  voucherData: { 
    blabla: { 
      voucherNo: '*****', 
      voucherValue: '***', 
      voucherIssueDate': '', 
      voucherExpiryDate: '******' 
    } 
  } 
}
"""
于 2017-06-30T16:43:14.027 回答