我正在用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
答案 0 :(得分:2)
只需使用JsonPath通配符(..
或*
)。请注意,当您使用通配符时-结果总是 为JSON数组。这是您的解决方案:
* match response.data..subscribers[0].products[0] == []