我目前使用的是一个招摇过市的模式,它为几个值定义枚举。我想知道我怎样才能对我的自大文件做出回应。我希望确保返回的响应值仅是模式中指定的值之一(想想Swagger中的enum)。如果响应中返回了架构内数组中未定义的任何其他内容,则测试应该失败。
我如何使用以下方法实现这一点:
Schema.json
{
"itemType":{
"hardware":[
"VIDEO CARD",
"SOLID STATE DRIVE",
"HARD DRIVE"
]
}
}
所有值都是可选的,并将以字符串值响应。
答复:
{
"itemType": {
"hardware": "HARD DRIVE"
}
}
我的猜测是,它可能是沿着*匹配response.itemType.hardware == "##字符串?_=='视频卡'||_=='固态硬盘'||_=='硬盘'"
但我可能有我的语法不正确。
另一种验证方法是使用匹配器。通过JSON路径,您可以在比较运算符的帮助下获取元素内部的所有内容,如contains、contains only和!包含以检查字符串列表中是否存在某些元素。例如,在您的情况下:
Scenario:
Given path '/something'
When method GET
Then status 200
And print response
And match response.itemType.hardware[*] contains only ["value1", "value2"]
以这种方式更清楚地编写测试。更具可读性。
注意:考虑到
包含的
运算符只适用于List,因此您需要获取一个列表。在前面的例子中,我们使用*符号。
我觉得这更具可读性:
* match schema.itemType.hardware contains response.itemType.hardware
右侧有响应
可能有点不寻常。
您可以尝试以下方法:
* def schema =
"""
{
"itemType":{
"hardware":[
"VIDEO CARD",
"SOLID STATE DRIVE",
"HARD DRIVE"
]
}
}
"""
* def response =
"""
{
"itemType": {
"hardware": "HARD DRIVE"
}
}
"""
* match response == { itemType: { hardware: '#? schema.itemType.hardware.contains(_)' } }
* def isValidHardware = function(x){ return schema.itemType.hardware.contains(x) }
* match response == { itemType: { hardware: '#? isValidHardware(_)' } }
我试图用空手道验证响应模式,但数组存在问题。附加响应和功能以及my schema.json。 回应- } responseSchema.json {"页面":"#编号","per_page":"#编号","总计":"#编号","total_pages":"#编号","数据": "#[] #对象","支持":"#对象"}
每当我试图验证一个模式或使用模糊匹配来验证来自JSON对象中响应的布尔字段时,尽管输入了不正确的数据,它似乎总是通过。 为了便于查询,让我们将重点放在使用内联模糊匹配,就像将模式存储在单独的文件中一样。 功能文件: 答复: 我断言的目的是断言每个值以任何顺序返回正确的值类型。如果由于任何原因没有返回该值,或者存在比模式中定义的值更多的值,我希望测试失败。我怎样才能做到这一点? 我假设use。但是,
我正在使用空手道验证GET请求的整个json响应。 下面是来自请求的json响应示例(我只为items显示了两个元素) 以下是我试图验证的方式: 但是,我得到了一个断言错误:
早上好 我刚刚开始使用JSON,所以我知道这是一个非常基本的问题,有人能指出我在尝试验证下面的事件和问题ID方面的错误吗? id字段似乎已成功验证,但我的文件在尝试验证时失败。
我试图为下面的响应编写JSON模式。响应是动态的它可以是细节或细节。如果响应中的是,那么响应将包含人对象(组织对象将不可用)。如果是,组织详细信息将包含在响应中(人对象将不可用)。下面给出了两种不同的预期反应 我试图使用下面给出的模式使上述条件有效 我目前面临的问题是,如果响应中的是,它会抛出以下错误 是否有任何方法可以在模式中指定,如果person对象可用,则organization对象将不可用
我只是想知道如何进行条件模式验证。API响应是基于键的动态响应。如果是,那么,人的详细信息将被包括,如果是组织的详细信息将被包括在JSON响应中。所以响应可以是以下任何一种形式 我为验证上述2个场景而创建的架构如下 但是架构与实际响应不匹配。我应该对架构进行哪些更改才能使其工作?