当前位置: 首页 > 知识库问答 >
问题:

空手道比赛表情

邢烨烨
2023-03-14

我使用模式验证来验证响应,值返回一个数字或“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

如何纠正匹配表达式?

共有1个答案

薛高澹
2023-03-14

给你。尝试接受某人的帮助来检查您的代码。仔细阅读文档。下次,像这样简化你的问题。

* 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 网络服务或应用中设置比赛速度目标,并同步至手表。 如果您已计划好当天的比赛速度目标,手表会在进入训练准备模式时建议您启动该目标。 在手表上创建比赛速度目标 您可以