0

我正在尝试使用 Katalon Studio 进行一些网络服务自动化。我一直在关注如何使用 jsonslurper 解析返回的 Json 正文的指南。 https://docs.katalon.com/katalon-studio/tutorials/parse_json_responses.html 如指南中所述,一切正常。我想看看我是否可以使用 junit 断言,特别是 assertEquals() 以获得更好的错误文本。鉴于我们有这个

import groovy.json.JsonSlurper

String jsonString = {"menu": {
"id": "file",
"tools": {
"actions": [
{"id": "new", "title": "New File"},
{"id": "open", "title": "Open File"},
{"id": "close", "title": "Close File"}
],
"errors": []
}}}
JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(jsonString)

def array1 = parsedJson.menu.tools.actions

String onlickValue1 = ""

for(def member : array1) {
assertEquals("Open File", member.title)
break
}

我遇到的问题是,我的断言在比较它遇到的第一个标题元素(即“新文件”)时会引发错误。

我打算循环遍历数组中的所有元素,并对所有元素断言我的预期值。如果我的期望值不存在,那我就失败了。

我觉得我错过了一些东西,因为我们过去用 java 做过类似的事情,但我在这里看不到。

4

1 回答 1

1

所以我发现问题在于我的经验不足/无知。在网上寻找解决方案时,我无法完全确定我要实现的代码在做什么。我正在使用 for.each 循环来根据我的预期值断言数组中的元素。对于与我的预期值不匹配的每个元素,这当然是正确的失败。所以我通过添加如下if语句使其工作:

String expectedValue = ''
for(def member : array1) {
if (member.title=="Open File")
{
expectedValue = member.title
}
break
}
assertEquals("Open File", member.title)

我发现的一种更简单的方法是assertJ按以下方式 使用assertThat(member).contains("Open File")

我知道有更好的解决方案来实现我想要做的事情。但是出于这个问题的目的,我认为它已经解决了。

于 2019-06-10T19:08:47.917 回答