如何在空手道 API 测试中使用正则表达式验证模板中的响应结构

How to validate response structure in a template using regular expression in Karate API testing

我正在尝试使用 json 模板验证响应结构和响应值。我能够使用常规 expression.Yet 验证可能具有不同预定义值的键 DateTime 我无法通过在模板中提供正则表达式来验证。

例如:

API 待验证的响应:

t1 = {
  "key1": "ABC",
  "DateTime" : "2018-01-30T14:00:00+00:00"
}

验证模板:

t2 = {
  "key1": "#regex(ABC|PQR|XYZ|AAA)$",,
  "DateTime" : "#regex \d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2]\d|3[0-1])T(?:[0-1]\d|2[0-3]):[0-5]\d:[0-5]\d[+-]([01]\d|2[0-4])(:?[0-5]\d)?"
}

* match t1 == t2

请告诉我我做错了什么以及如何通过正则表达式模板匹配实现日期时间验证。

谢谢

您必须转义 \ 字符。阅读文档:https://github.com/intuit/karate#ignore-or-validate

* def foo = '2018-01-30T14:00:00+00:00'
* match foo == '#regex \d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2]\\d|3[0-1])T(?:[0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d[+-]([01]\\d|2[0-4])(:?[0-5]\\d)?'