Karate 空手道API测试-从响应中删除重复值,并将其与新响应进行比较
我有一个场景,作为响应,我收到了重复的值Karate 空手道API测试-从响应中删除重复值,并将其与新响应进行比较,karate,Karate,我有一个场景,作为响应,我收到了重复的值 And def abcName = $ListDataSet_Response.rowData[*].4 并打印abcName [ "BP Part Sht NCA MS", "BP Part Sht NCA MS", "BP Part Sht NCA MS", "BP Part Sht NCA MS", "BP Part Sht NCA MS", "Bay Pond USB, Inc MS", "Bay Pond USB
And def abcName = $ListDataSet_Response.rowData[*].4
并打印abcName
[
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"Bay Pond USB, Inc MS",
"Bay Pond USB, Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP USB IV, Inc MS",
"BP Mrts Block NCA MS",
"BP Mrts Block NCA MS"
]
现在,我有了一个功能,使用distinct values查询,我可以在没有重复值的情况下获得响应。执行该操作后,新的响应是:
[
"BP Part Sht NCA MS",
"Bay Pond USB, Inc MS",
"BP USB III Inc MS",
"BP CS Sht NCA",
"BP USB IV, Inc MS",
"BP Mrts Block NCA MS",
]
现在,我需要用前面的响应来验证这个响应,记住如果我从第一个响应中删除重复的值,它将是我的新响应(从distinct values quesry接收)
所有这些值都是运行时和动态的
我到目前为止的做法是:
第一:
对于任何遇到此问题的人,在1.0+中,上述答案不再有效-现在需要使用karate.toJava()才能将其转换为哈希集,即:
* def response =
"""
[
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"Bay Pond USB, Inc MS",
"Bay Pond USB, Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP USB IV, Inc MS",
"BP Mrts Block NCA MS",
"BP Mrts Block NCA MS"
]
"""
* json response = new java.util.HashSet(karate.toJava(response))
* def expected =
"""
[
"BP Part Sht NCA MS",
"Bay Pond USB, Inc MS",
"BP USB III Inc MS",
"BP CS Sht NCA",
"BP USB IV, Inc MS",
"BP Mrts Block NCA MS",
]
"""
* match response contains only expected
此“预期”响应是硬编码的。无法使用硬编码值。由于响应是在运行时发出的,硬编码值断言将随时失败。@deepakmathpal现在我希望您理解,您可以在右侧使用变量,例如,
*def expected=response2
-任何其他问题都可以解决。这一部分是新的,但仍有阻碍。*json response=new java.util.HashSet(response)谢谢!我想知道我们是否应该添加一个karate.distinct()
API,我们添加了karate.sort()
已经在1.X(编辑)中了-打开了一个问题:那太棒了!
* def response =
"""
[
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"BP Part Sht NCA MS",
"Bay Pond USB, Inc MS",
"Bay Pond USB, Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP USB III Inc MS",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP CS Sht NCA",
"BP USB IV, Inc MS",
"BP Mrts Block NCA MS",
"BP Mrts Block NCA MS"
]
"""
* json response = new java.util.HashSet(karate.toJava(response))
* def expected =
"""
[
"BP Part Sht NCA MS",
"Bay Pond USB, Inc MS",
"BP USB III Inc MS",
"BP CS Sht NCA",
"BP USB IV, Inc MS",
"BP Mrts Block NCA MS",
]
"""
* match response contains only expected