我使用模式验证来验证响应,值返回一个数字或“NA”,下面是响应和模式验证。
Response:
{
"ID": "ES123D74590Z",
"companyName": "ABC Corp",
"hourMs": 67890000000,
"date": "2020-06-09T00:00:00.000Z",
"scores": {
"AllScore": 61,
"MaxScore": 59,
"ScoreA": 75,
"ScoreB": "NA",
"ScoreC": 49,
"ScoreD": "NA"
},
"movement": {},
"amt": {}
}
Schema Assertion:
{
"ID": '#string',
"companyName": '#string',
"hourMs": '#number',
"date": '#regex[^\d\d\d\d-([0-9]{2})-([0-9]{2})(\T)([0-9]{3}):([0-9]{3}):([0-9]{3})\.[0-9]{3}\Z)$]',
"scores": {
"AllScore": '##number? _ >= 0 && _ <=100 || _ == "NA"',
"MaxScore": '##number? _ >= 0 && _ <=100 || _ == "NA"',
"ScoreA": '##number? _ >= 0 && _ <=100 || _ == "NA"',
"ScoreB": '##number? _ >= 0 && _ <=100 || _ == "NA"',
"ScoreC": '##number? _ >= 0 && _ <=100 || _ == "NA"',
"ScoreD": '##number? _ >= 0 && _ <=100 || _ == "NA"'
},
"movement": {},
"amt": {}
}
收到错误消息:
com.intuit.karate.exception.KarateException: score.feature:19 - path: $.scores.ScoreB, actual: 'NA', expected: '##number? _ >= 0 && _ <=100 || _ == "NA"', reason: not a number
如何纠正匹配表达式?
给你。尝试接受某人的帮助来检查您的代码。仔细阅读文档。下次,像这样简化你的问题。
* def response =
"""
{
"AllScore": 61,
"MaxScore": 59,
"ScoreA": 75,
"ScoreB": "NA",
"ScoreC": 49,
"ScoreD": "NA"
}
"""
* def isNum = function(x){ if (x === 'NA') return true; return typeof x === 'number' }
* def schema =
"""
{
"AllScore": '#? isNum(_)',
"MaxScore": '#? isNum(_)',
"ScoreA": '#? isNum(_)',
"ScoreB": '#? isNum(_)',
"ScoreC": '#? isNum(_)',
"ScoreD": '#? isNum(_)'
}
"""
* match response == schema
另外,我建议您查看这个日期验证示例以获得更多想法:https://stackoverflow.com/a/55938480/143475
这个问题源于前面的一个问题 假设我们实现的服务器v1和v2响应如下 类似地,我们定义v1和v2的客户机模式如下 根据以上给定的数据,我只想在一个通用行中测试以下三种情况,它们必须通过测试 使用一个通用行,如下所示 关于实现这一目标的可能方法,请参阅我在先前问题中提出的建议。 我已经使用karate.filterKeys()尝试了上一个问题中提到的解决方案,但是第三个案例将失败,因为它关注的是筛选键
我95%的自动化框架是在空手道,工作得很好。我们需要检查应用程序日志中显示的中间结果的功能很少(不在Json响应中)。我写了一个外壳脚本,它在从邮递员手动发送请求后验证Linux机器上的应用程序日志。我使用eclipse的JSCH库调用这个脚本。 有没有什么方法可以让我从空手道发送请求,然后调用我的JSCH类进行验证,这样就可以避免手动发送请求的步骤? 谢谢,阿比
我正在尝试使用空手道进行e2e测试,并已从最低设置开始。我想在用于测试,但karate报告该文件不是js函数,因此测试无法获取配置: 这是我的: 这是我的测试: 这是测试运行程序:
我必须比较两个JSON数组,一个值为[“123.45”],另一个值为[“123.45”]如何迭代和删除空格?第二个数组值在实际值之前有空格。
比赛速度功能有助于您保持稳定配速,并在设定距离内达到您的目标时间。定义某段距离的目标时间 - 例如将 10 公里跑步的目标时间设定为 45 分钟,并跟踪对比实际用时与这个预设目标的差距。 您可以在手表上设置比赛速度,或者可以在 Flow 网络服务或应用程序中设置比赛速度目标,并同步至手表。 如果您已计划好当天的比赛速度目标,手表会在进入训练准备模式时建议您启动该目标。 在手表上创建比赛速度目标 您
比赛速度功能有助于您保持稳定配速,并在设定距离内达到您的目标时间。定义某段距离的目标时间 - 例如将 10 公里跑步的目标时间设定为 45 分钟,并跟踪对比实际用时与这个预设目标的差距。 您可以在手表上设置比赛速度,或者可以在 Flow 网络服务或应用中设置比赛速度目标,并同步至手表。 如果您已计划好当天的比赛速度目标,手表会在进入训练准备模式时建议您启动该目标。 在手表上创建比赛速度目标 您可以