需要帮助 - 如何遍历列表 and/or 地图
Need help - How to loop through a list and/or a map
Scala 对我来说很新,一旦离开 gatling dsl,我就会遇到问题。
在我的例子中,我调用了一个 API (Mailhog),它以 json 格式的大量邮件进行响应。我无法获取所有值。
我需要它和“jsonPath”,我也需要“正则表达式”。
这导致我需要遍历并保存每个值的地图和列表。
.check(jsonPath("$[*]").ofType[Map[String,Any]].findAll.saveAs("id_map"))
.check(regex("href=3D\\\"(.*?)\\\"").findAll.saveAs("url_list"))
起初我想循环“检查”,但我没有找到任何重复它们而不重复“get”请求。所以这是一张地图和一张清单。
1) 我需要地图的每个值,并且能够通过以下 foreach 循环解决问题。
.foreach("${id_map}", "idx") {
exec(session => {
val idMap = session("idx").as[Map[String,Any]]
val ID = idMap("ID")
session.set("ID", ID)
})
.exec(http("Test")
.get("/{ID}"))
})}
2) 我需要列表中的每第 3 个值并对它们发出获取请求。在执行此操作之前,我需要替换字符串的一部分。我在检查时尝试替换部分字符串。但它不适用于 findAll。
.check(regex("href=3D\\\"(.*?)\\\"").findAll.transform(raw => raw.replace("""=\r\n""","")).saveAs("url"))
如何替换列表中每个字符串的一部分?
还有我怎样才能对列表中的每个第 3 个元素发出 get-request。
我无法让它与上面相同的 foreach 结构一起工作。
我无法自己解决问题。起初我对我的 check(regex ...) 部分做了一点改动。
.check(regex("href=3D\\\"(.*?)\\\"").findAll.transform(_.map(raw => raw.replace("""=\r\n""",""))).saveAs("url_list"))
然后我只想对我的列表中的每三个元素发出一个 Get-Request(因为我提取的 URL 在每个邮件中出现三次)。
.exec(session => {
val url_list =
session("url_list").as[List[Any]].grouped(3).map(_.head).toList
session.set("url_list", url_list)
})
最后,我使用 foreach 循环遍历了我的最终列表。
foreach("${url_list}", "urls") {
exec(http("Activate User")
.get("${urls}")
)
}
Scala 对我来说很新,一旦离开 gatling dsl,我就会遇到问题。
在我的例子中,我调用了一个 API (Mailhog),它以 json 格式的大量邮件进行响应。我无法获取所有值。 我需要它和“jsonPath”,我也需要“正则表达式”。 这导致我需要遍历并保存每个值的地图和列表。
.check(jsonPath("$[*]").ofType[Map[String,Any]].findAll.saveAs("id_map"))
.check(regex("href=3D\\\"(.*?)\\\"").findAll.saveAs("url_list"))
起初我想循环“检查”,但我没有找到任何重复它们而不重复“get”请求。所以这是一张地图和一张清单。
1) 我需要地图的每个值,并且能够通过以下 foreach 循环解决问题。
.foreach("${id_map}", "idx") {
exec(session => {
val idMap = session("idx").as[Map[String,Any]]
val ID = idMap("ID")
session.set("ID", ID)
})
.exec(http("Test")
.get("/{ID}"))
})}
2) 我需要列表中的每第 3 个值并对它们发出获取请求。在执行此操作之前,我需要替换字符串的一部分。我在检查时尝试替换部分字符串。但它不适用于 findAll。
.check(regex("href=3D\\\"(.*?)\\\"").findAll.transform(raw => raw.replace("""=\r\n""","")).saveAs("url"))
如何替换列表中每个字符串的一部分? 还有我怎样才能对列表中的每个第 3 个元素发出 get-request。
我无法让它与上面相同的 foreach 结构一起工作。
我无法自己解决问题。起初我对我的 check(regex ...) 部分做了一点改动。
.check(regex("href=3D\\\"(.*?)\\\"").findAll.transform(_.map(raw => raw.replace("""=\r\n""",""))).saveAs("url_list"))
然后我只想对我的列表中的每三个元素发出一个 Get-Request(因为我提取的 URL 在每个邮件中出现三次)。
.exec(session => {
val url_list =
session("url_list").as[List[Any]].grouped(3).map(_.head).toList
session.set("url_list", url_list)
})
最后,我使用 foreach 循环遍历了我的最终列表。
foreach("${url_list}", "urls") {
exec(http("Activate User")
.get("${urls}")
)
}