当前位置: 首页 > 知识库问答 >
问题:

jsonpath响应的断言问题

祁正阳
2023-03-14

我正在用空手道的bdd方法编写api测试自动代码。断言部分让我很难过。我的响应如下所示,当我调用路径$.data.subscribers[0]. Products时,我通过http://jsonpath.herokuapp.com/网站检查了空空数组。然而,当我运行我的小cucumber空手道功能,然后它给我的响应为空,它仍然给我错误断言。它说实际:

null,应为:null。。。

我看不到任何错误,如何修复?这是一个bug还是有什么方法可以处理?

我的回应是:

{
  "meta": {
    "return_code": 0,
    "message": "success"
  },
  "data": {
    "sbs": [
      {
        "sbs_id": 32432432,
        "dt": "OTT",
        "pt": []
      },
      {
        "sbs_id": 455654445,
        "dt": "IPTV",
        "pt": []
      }
    ]
  }
}

我写的JsonPath:

$.data.sbs[0].pt[0]

空手道给出的断言:

com.intuit.karate.exception.KarateException: base-tvpp-cases.feature:316 
- path: $[0], actual: null, expected: null, reason: actual json-path does 
not exist

小cucumber-空手道-代码,我写在功能文件:我尝试了以下两个

And match response.data.subscribers[0].products[0] == null
And match response.data.subscribers[0].products[0] == '#null'

共有1个答案

慕宏儒
2023-03-14

只需使用JsonPath通配符(*)。请注意,使用通配符时,结果将始终是JSON数组。以下是您的解决方案:

* match response.data..subscribers[0].products[0] == []
 类似资料:
  • 我想添加一个监视器来检测不正常的服务,并在这种情况下发送警报。我已经公开了一个简单的REST API - ,它返回一个JSON,例如。 然后,我已将 添加到我的 site24x7 帐户,将内容检查响应格式设置为 JSON,现在我应该提供要断言的 JSONPath。 在JSONPath在线测试器中,当我使用时,我得到。但我想我应该尝试断言该返回值。 使用以下表达式不起作用 我想我应该使用或过滤来评估

  • 现在,根据响应,我希望在JSR223断言中验证响应是否基于chgId字段是正确的。这意味着在两个“data”数组“chgid”中都应该出现405文本。 有人能建议吗?

  • 我已经在jmeter中使用响应断言将响应代码422作为成功的http请求,并且它有效。但是 jmeter 将响应代码 200 指定为失败的 http 请求。 我在模式中添加了422和200进行测试,但jmeter仅将响应代码200断言为成功的http请求。 如何将响应代码200或422分配为成功的http请求? 问候,斯蒂芬奥

  • 将SAML响应返回给SP时,大多数IdP(如AzureAD、Okta、Onelogin、GSuite)都有以下签名选项: 签名响应 并且在没有任何配置的情况下,对于大多数IdP,签名的默认值是仅签署断言。 下面是来自AzureAD的SAML响应示例(默认签名选项是符号断言)。断言受到完整性保护,不能进行篡改。但是,断言以外的字段,,可以在不知情的情况下被篡改或添加/删除! 所以我的问题是: 为什么

  • 我试图断言一个xml是否包含一个xpath。例如xpath是: 当我检查它https://www.freeformatter.com/xpath-tester.html它成功返回一个元素。 然而,当我尝试使用以下空手道机制时,它失败了: 错误是 我是不是做错了?我正试着跟着这里的医生https://github.com/intuit/karate/blob/master/karate-junit4

  • 我有一个Java web应用程序。我想为我的应用程序实现SAML单点登录登录。我有这个GitHub onelogin程序来发送请求并获得响应。但它没有正常工作。我在那里创建了一个帐户。但我没有企业账户。当我运行应用程序时,它将进入onelogin登录页面。我试图登录,但在响应中没有返回任何权限,表明我没有权限。如果我也提供了错误的凭据,那么它不会给出任何SAML响应。 所以我决定创建一个断言并签名