Karate 如何有条件地检查响应?
我正在用空手道做数据驱动测试,遇到了一个阻塞问题。REST API响应体处于不同的结构和状态。例如,当状态为200时,响应主体是JSON数组。当状态为4**和5***时,响应主体为字符串或空白。我希望使用blow代码有条件地检查响应。但这似乎不起作用Karate 如何有条件地检查响应?,karate,Karate,我正在用空手道做数据驱动测试,遇到了一个阻塞问题。REST API响应体处于不同的结构和状态。例如,当状态为200时,响应主体是JSON数组。当状态为4**和5***时,响应主体为字符串或空白。我希望使用blow代码有条件地检查响应。但这似乎不起作用 "* eval if (verInfo.statusCode == 200) (match each response contains any verInfo.respBody) //verInfo.statusCode and ver
"* eval if (verInfo.statusCode == 200) (match each response contains any verInfo.respBody) //verInfo.statusCode and verInfo.respBody is from the test data(DDT)
* eval if (verInfo.statusCode != 200) match response contains verInfo.respBody"
首先,您不能像这样混合使用空手道脚本和JavaScript 其次,我建议您使用内置变量。我还建议使用适当的数据驱动方法,而不是用条件逻辑过度设计测试 因此,您可以这样做(如果您阅读文档和示例,还有许多其他方法):
场景大纲:
给定url'http://foo.bar'
请求
当方法发布时
然后匹配responseStatus==
和匹配响应==
示例:
|请求|代码|正文|
|“a”200“foo”|
|“b”| 400 |”|
Scenario Outline:
Given url 'http://foo.bar'
And request <req>
When method post
Then match responseStatus == <code>
And match response == <body>
Examples:
| req | code | body |
| 'a' | 200 | 'foo' |
| 'b' | 400 | '' |