【问题标题】:How to get response HTTP status from Karate Call? Getting response status as 204 but karate.log(result.response) is blank如何从空手道呼叫中获取响应 HTTP 状态?获取响应状态为 204 但 karate.log(result.response) 为空白
【发布时间】:2018-12-28 17:28:22
【问题描述】:

我正在通过空手道 API 调用网络服务。执行服务时,我得到了预期的 HTTP 状态 204。但是,当我记录响应时,我得到了空白。

下面是我的webservice调用、响应和日志输出

    result = karate.call('ExecuteWebService.feature', [urlToExecute]);
    karate.log("Response is " + result.response); #Expecting that code displays HTTP status here

我知道我的通话得到了适当的响应,因为我的日志显示在内容下方

    HH.mm.ss.mil [main] DEBUG com.intuit.karate - 
    1 < 204
    1 < Date: Fri, Rest of date portion
    1 < X-Application-Context: App Context Data

但是 karate.log 不显示状态代码。我需要状态码,这样我就可以根据我的预期值断言状态,从而通过/失败测试

    HH.mm.ss.mil [main] DEBUG com.intuit.karate - response time in milliseconds: 431
    HH.mm.ss.mil [main] INFO com.intuit.karate - [print] 
    HH.mm.ss.mil [main] INFO com.intuit.karate - Response is  

您能否建议如何从 karate.call 结果中提取 HTTP 状态以便我可以断言响应?

【问题讨论】:

    标签: karate


    【解决方案1】:

    这应该可行,

    * def status = result.responseStatus
    

    您也可以访问responseresponseTimeresponseHeadersresponseCookies

    【讨论】:

    • 还有一件事,您还可以访问您在称为特性中定义的所有变量。
    • 打印您的“结果”变量以查看从您的 karate.call 返回的所有数据
    • 是的,我试过了。它打印了类似 com.intuit.karate.ScriptObjectMap@423c5404 的内容。所以不确定如何从 ObjectMap 中获取数据。你回答的是我正在寻找的东西
    【解决方案2】:

    204响应码意思是:

    服务器已成功完成请求,并且没有 要在响应负载正文中发送的附加内容

    因此,您没有任何响应正文是正常的。
    在您的情况下,我只会验证状态代码是否正确(根据应用程序规范)。

    【讨论】:

    • 如何从结果中获取状态码?目前 karate.log() 显示空白状态码而不是 204
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多