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

想在空手道DSL中尝试JSON模式验证的条件之一

申高峯
2023-03-14

我一直在用这种东西。

* def schema =
  """
    {
    eligible: #string,
    Reason: ##string,
    enrolled: '##regex ^\\d{4}-\\d{2}-\\d{2}$',
    modifiable: ##string,
    Date: '##regex ^\\d{4}-\\d{2}-\\d{2}$',
    status: #string,
    Id: #string,
    email: #string,
    serviceAddressDetails: ##[] firstSchema,
    DeviceIds: #[] #string
    }
  """

预期的反应有两种可能的结果,我想断言,如果我们得到其中任何一种,测试应该通过。

第一

DeviceIds : ["abcderfg"]

第二

    DeviceIds : [
                  {
                     id : "abcd"
                   }
                ],

如果我们在响应中得到它们中的任何一个,测试/模式应该通过。如何在同一个模式中断言这两个场景?任何帮助都非常感谢。谢谢!

共有1个答案

轩辕奕
2023-03-14

再做一次检查。我知道,这可能不像是一个“单一的可重用模式”,但是接受我的建议,这是不值得的。这里有一个解决方案:

* def response1 = { deviceIds: ['abcd'] }
* def firstDevice = response1.deviceIds[0]
* def isTypeOne = karate.typeOf(firstDevice) == 'string'
* def expectedDevice = isTypeOne ? '#[] #string' : '#object'
* match response1 == { deviceIds: '#(expectedDevice)' }

* def response2 = { deviceIds: { id: 'abcd' } }
* def firstDevice = response2.deviceIds[0]
* def isTypeOne = karate.typeOf(firstDevice) == 'string'
* def expectedDevice = isTypeOne ? '#[] #string' : '#object'
* match response2 == { deviceIds: '#(expectedDevice)' }

其他想法:

https://stackoverflow.com/a/62567262/143475

 类似资料:
  • 我试图为下面的响应编写JSON模式。响应是动态的它可以是细节或细节。如果响应中的是,那么响应将包含人对象(组织对象将不可用)。如果是,组织详细信息将包含在响应中(人对象将不可用)。下面给出了两种不同的预期反应 我试图使用下面给出的模式使上述条件有效 我目前面临的问题是,如果响应中的是,它会抛出以下错误 是否有任何方法可以在模式中指定,如果person对象可用,则organization对象将不可用

  • 我只是想知道如何进行条件模式验证。API响应是基于键的动态响应。如果是,那么,人的详细信息将被包括,如果是组织的详细信息将被包括在JSON响应中。所以响应可以是以下任何一种形式 我为验证上述2个场景而创建的架构如下 但是架构与实际响应不匹配。我应该对架构进行哪些更改才能使其工作?

  • 我正在使用空手道验证GET请求的整个json响应。 下面是来自请求的json响应示例(我只为items显示了两个元素) 以下是我试图验证的方式: 但是,我得到了一个断言错误:

  • 我试图用空手道验证响应模式,但数组存在问题。附加响应和功能以及my schema.json。 回应- } responseSchema.json {"页面":"#编号","per_page":"#编号","总计":"#编号","total_pages":"#编号","数据": "#[] #对象","支持":"#对象"}

  • 早上好 我刚刚开始使用JSON,所以我知道这是一个非常基本的问题,有人能指出我在尝试验证下面的事件和问题ID方面的错误吗? id字段似乎已成功验证,但我的文件在尝试验证时失败。

  • 我正在使用来自动处理肥皂请求,我想使用XML Schema(XSD)验证XML格式的响应。 我需要模式。java调用它的代码和函数。功能文件。我尝试使用RESTAPI和空手道演示来验证json模式,并找到了正确的结果,但soap(xml、xsd)没有得到。我正在尝试这个模式。用于XSD验证的java。