我的方法取得了90%的成功,但当响应在一个子键中有多个条目时,逻辑就会失败,我无法将一个通用逻辑放在适当的位置,该逻辑将在所有情况下运行。
响应样本为
{
"items": [
{
"id":1,
"name": "John",
"sections": [
{
"id":1,
"description": "John smith"
}
]
}
]
}
现在,我的用例说您搜索John文本,然后items数组将包含许多对象,这些对象的项是。名称或项目。部分。说明应包含“John”关键字
我放置的匹配逻辑运行良好,因为我正在迭代项[]。名称和项目。第[]节。描述
主要的挑战来自于[*]节。说明包含如下所示的多个部分
{
"items": [
{
"id":1,
"name": "John",
"sections": [
{
"id":1,
"description": "John smith"
},
{
"id":1,
"description": "remain smith of the first object"
}
]
}
]
}
逻辑现在应该适用于项目[]。名称或项目。第[]节。说明(章节[*]的多个条目。说明)
我面临的问题是当我迭代项[]时。名称
它给了我所有的名字和所有的章节。在单独的数组中的描述我想要的是它应该一个接一个地给我。
例如,第一个结果集应提供以下信息
[
"John"
]
and
[
"John smith"
"remain smith of the first object"
]
这样我就可以运行现有的逻辑来检查John是否可用。当前,我的逻辑在描述的第一个条目上运行,它不会检查下一个条目或部分。描述,这是以下匹配对象失败的原因,因为“john”出现在描述的第二个条目中
{
"items": [
{
"id":11,
"name": "SMITH",
"sections": [
{
"id":11,
"description": "SMITH"
},
{
"id":11,
"description": "JOHN Carter"
}
]
}
]
}
我目前使用的匹配逻辑是-
* def matchText =
"""
function (nameArr, sectionArr, matchingWord)
{
for(var i = 0; i < nameArr.length; i++)
var regEx = new RegExp(matchingWord, 'gi')
var nameMatch = nameArr[i].match(regEx)
var secMatch = sectionArr[i].match(regEx)
if (nameMatch ==null && secMatch == null) {
return false;
}
}
return true;
}
"""
* def getName = get response.items[*].name
* def getDescription = get response.items[*].sections[*].description
* assert matchText(getName,getDescription,'john')
所以,当名称中的长度相同时,这种逻辑就起作用了
示例代码:
Feature: Validation
Scenario:
* def resp =
"""
{
"items": [
{
"id": 11,
"name": "JOHN",
"sections": [
{
"id": 11,
"description": "SMITH"
},
{
"id": 11,
"description": "JOHN Carter"
}
]
}
]
}
"""
* def names = []
* def fun =
"""
function(x){
var json = x.sections;
var temp = x.name
for(var i = 0; i < json.length; i++) {
var obj = json[i];
temp = temp + "," + obj.description
}
karate.appendTo(names, temp);
}
"""
* def items = get resp.items[*]
* karate.forEach(items, fun)
* match each names == '#regex .*JOHN.*'
我是银行领域帐户的自动化测试员。我有个问题需要你的帮助。 当前的方法: 1.我们用于API服务测试的框架是使用RESS assured的基于Java的Serenity-Cucumber框架。 2.与该框架相关的所有脚本开发/脚本维护活动都由我们团队中的自动化测试人员负责。 3.几周前,我们了解了空手道框架并完成了PoC(概念验证)。 4.一切顺利,我们正在计划迁移现有的RESS assured J
我有很多图像在绘制,我希望放入一个数组。手动将它们放入数组会花费太长的时间和代码。我想知道是否有一种方法来循环,如下所示:
我95%的自动化框架是在空手道,工作得很好。我们需要检查应用程序日志中显示的中间结果的功能很少(不在Json响应中)。我写了一个外壳脚本,它在从邮递员手动发送请求后验证Linux机器上的应用程序日志。我使用eclipse的JSCH库调用这个脚本。 有没有什么方法可以让我从空手道发送请求,然后调用我的JSCH类进行验证,这样就可以避免手动发送请求的步骤? 谢谢,阿比
我有以下API响应样本 根据上面的回答,我的测试表明,每当我点击API请求时,第11个ID是SMITH,第10个ID是JAMES 所以我想把它存储在一个表中,并根据实际的响应进行断言 现在我该如何一个接一个地匹配?与first类似,它解析API响应中的第一个ID和第一个名称,并与表first ID和表first name匹配 请分享从空手道做它的任何方便的方式
我在空手道场景中编写了javascript函数,该函数在参数中接受当前日期并获取日期、年份、月份并将它们添加到数组中。但是由于某种未知的原因,我得到了NaN值。请参阅下面我一直在使用的空手道步骤。 注意,如果我在js执行环境中执行,例如sublime text,类似的javascript代码也适用于我。
我在升级cucumber和空手道版本后得到了以下例外情况。 下面是我的启动器/运行器: 空手道和cucumber依赖: 我试过用JUnit运行,但没有运气!我该如何处理这个问题?