Karate DSL如何校验JSON字符串数组中是否存在指定子字符串
问题
我有如下所示的JSON字符串数组:
[ "TEST1019005-2021-10-19T18:19:41.271055Z-PROCESSING-2", "TEST1019005-2021-10-19T18:19:41.271055Z-PROCESSING-1", "TEST1019002-2021-10-19T14:50:16.810678Z-PROCESSING-2", "TEST1019002-2021-10-19T14:50:16.810678Z-PROCESSING-1", "TEST1019002-2021-10-19T14:50:16.810678Z-PROCESSING-0", "777777-2021-10-19T09:24:33.064845Z-PROCESSING-2", "777777-2021-10-19T08:23:10.213230Z-PROCESSING-1", "777777-2021-10-19T08:23:10.213230Z-PROCESSING-0", "TEST1018001-2021-10-18T16:31:32.643392Z-PROCESSING-0", "TEST1013001-2021-10-13T15:13:59.974540Z-PROCESSING-0", "777777-2021-10-13T14:17:45.727585Z-PROCESSING-2", "Test01-2021-10-11T20:20:05.968159Z-PROCESSING-1", "Test01-2021-10-11T20:20:05.968159Z-PROCESSING-0", "333333333-2021-10-11T20:11:26.474697Z-PROCESSING-0", "333333333-2021-10-08T21:43:28.251925Z-PROCESSING-0", "232623234-2021-10-08T21:27:04.363014Z-PROCESSING-0", ]
需要校验数组的元素中是否包含当日日期2021-10-11或者词汇PROCESSING-1作为子串,使用Karate DSL实现该需求该如何操作?
解决方案
使用Karate DSL内置的正则匹配能力即可实现需求,核心匹配逻辑如下:
* match myArray contains "#regex (?i).*" + '匹配关键词' + ".*"
完整参考代码
# 定义目标数组 def myArray = """ [ "Cust1019005-2021-10-27T18:19:41.271055Z-PROCESSING-2", "Cust1019005-2021-10-19T18:19:41.271055Z-PROCESSING-1", "Cust1013002-2021-10-13T15:23:57.510469Z-PROCESSING-2", "333333333-2021-10-08T21:43:28.251925Z-PROCESSING-0", ] """ # 匹配是否包含指定日期 def dateQuery = '2021-10-11' match myArray contains "#regex (?i).*" + dateQuery + ".*" # 匹配是否包含指定状态词汇 def statusQuery = 'PROCESSING-1' match myArray contains "#regex (?i).*" + statusQuery + ".*"
如果只需要判断两个条件任意一个满足即可,也可以合并正则规则:
match myArray contains "#regex (?i).*(2021-10-11|PROCESSING-1).*"
内容的提问来源于stack exchange,提问作者Maaza
相关产品推荐
相关产品推荐

