繁体   English   中英

如何验证空手道中多个输入的响应

[英]How to validate response with multiple inputs in karate

我试图通过使用空手道框架提供多个输入来验证响应。 以下是示例功能文件。

 Scenario Outline: response validation
    Given url 'urls?xyz=[<value>]'
    When method get
    Then status <status>
    And match response == [{abc:'<response>'},{pqr:'<response1>'}]

Examples:
      | value  | status | response | response1          |
      |      3 |    200 |        3 | null               |
      | *      |    400 |          | Invalid xyz        |
      |     65 |    200 |          |                    |
      | &^%^&% |    400 |          | Invalid xyz        |

但是一次不能同时验证两个条件,因此“ abc”或“ pqr”中的一个参数始终为null。 以下是我得到的例外。

12:28:11.204 [pool-1-thread-1] DEBUG com.intuit.karate - response time in milliseconds: 742
12:28:11.276 [pool-1-thread-1] ERROR c.i.k.cucumber.KarateJunitFormatter - failed feature: path.my
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List
    at com.intuit.karate.Script.matchNestedObject(Script.java:969)
    at com.intuit.karate.Script.matchJsonPath(Script.java:871)
    at com.intuit.karate.Script.matchNamed(Script.java:597)
    at com.intuit.karate.StepDefs.matchNamed(StepDefs.java:463)
    at com.intuit.karate.StepDefs.matchEquals(StepDefs.java:453)
    at ✽.And match response == [{abc:'3'},{pqr:''}](path/my.feature:27)

实际上,我建议您一次遍历此示例,它将为您提供很多想法,并且有解决此问题的不同方法: dynamic-params.feature 例如,您可能想使用params关键字,而不是将查询参数连接到URL中。

以我的经验,将JSON代码片段放在“ Examples:表中更为简单,如下所示:

And match response == <expected>

Examples:
  | value  | status | expected                      |
  |      3 |    200 | [{abc:3},{pqr:null}]          |
  | *      |    400 | [{pqr:'Invalid xyz'}]         |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM