jsonpath响应的断言问题

时间:2019-04-10 06:50:54

标签: karate gherkin

我正在用Karate的bdd方法编写api测试自动化代码。
断言部分使我很难受。我的回答如下所示,当我调用该路径import sys INVALID_NUM_ARGS_ERROR = "At least two arguments not provided" INVALID_NUM_ERROR = "Invalid number provided" def your_main_program(args): # Call your methods from here, using the # relevant items in args try: num1 = int(args[1]) num2 = int(args[2]) except ValueError: print(INVALID_NUM_ERROR) length = len(args) if length == 3: multiply(num1, num2) elif length == 4: if num1 == 0 or num2 == 0: raise_string(num1, num2) else: formula = " * ".join([str(num1)] * num2) print(formula) raise_string(num1, num2) def multiply(n1, n2): print(f"{n1} * {n2} = {n1*n2}") def raise_string(n1, n2): print(f"{n1} ** {n2} = {n1**n2}") if __name__ == "__main__": your_main_program(sys.argv) 时,这使我在http://jsonpath.herokuapp.com/网站检查时得到了空-空数组。但是,当我运行小黄瓜空手道功能时,它给我的响应为空,仍然给我错误声明。它表示实际:

  

空,预期:空...

我看不到任何错误,该如何解决?是bug还是有任何方法可以解决?

我的答复:

$.data.subscribers[0].products

我写的JsonPath:

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

空手道给予的断言:

$.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

1 个答案:

答案 0 :(得分:2)

只需使用JsonPath通配符(..*)。请注意,当您使用通配符时-结果总是 为JSON数组。这是您的解决方案:

* match response.data..subscribers[0].products[0] == []