不使用 csv 文件的 Gatling 中的简单进纸器
Simple feeder in Gatling without using a csv file
如何在不使用 csv 文件的情况下使用 Gatling 创建一个简单的进纸器?
我试过 Gatling 文档中的脚本。
我在文档中看到了一个示例
val random = new util.Random
val feeder = Iterator.continually(Map("email" -> random.nextString(20) + "@foo.com"))
我不明白上面的代码。
我尝试了一个带有使用 csv 文件的馈线的脚本并成功执行。而不是从 csv 文件提供数据,我如何编写一个可以采用定义值的馈送器。
作为docs状态,Feeder
只是Iterator[Map[String, T]]
的别名。正如 Rüdiger Klaehn 强调的那样,您只需要确保您的馈线提供无限的价值流。
既然你说你已经能够 运行 使用内置 csv 供料器的示例,让我们将其转换为我们自己的供料器,以便更清楚上述自定义供料器代码的作用。
让我们看一下来自 advanced tutorial 的示例:
object Search {
val feeder = csv("search.csv").random // 1, 2
val search = exec(http("Home")
.get("/"))
.pause(1)
.feed(feeder) // 3
.exec(http("Search")
.get("/computers?f=${searchCriterion}") // 4
.check(css("a:contains('${searchComputerName}')", "href").saveAs("computerURL"))) // 5
.pause(1)
.exec(http("Select")
.get("${computerURL}")) // 6
.pause(1)
}
这是生成提要的部分:
val feeder = csv("search.csv").random // 1, 2
这是 search.csv
文件:
searchCriterion,searchComputerName
Macbook,MacBook Pro
eee,ASUS Eee PC 1005PE
让我们用新的自定义进纸器替换它:
/* This is our list of choices, we won't ready from csv anymore */
val availableComputers = List(
Map("searchCriterion" -> "MacBook", "searchComputerName" -> "Macbook Pro"),
Map("searchCriterion" -> "eee", "searchComputerName" -> "ASUS Eee PC 1005PE")
)
/* Everytime we call this method we get a random member of availableComputers */
def pickARandomComputerInfo() = {
availableComputers(Random.nextInt(availableComputers.size))
}
/* Continually means every time you ask feeder for a new input entry,
it will call pickARandomComputerInfo to gerenate an input for you.
So iterating over feeder will never end, you will always get
something */
val feeder = Iterator.continually(pickARandomComputerInfo)
这在您提供的示例中很难看出,但您可以拆分它以更好地理解它:
def getRandomEmailInfo() = Map("email" -> random.nextString(20) + "@foo.com")
val feeder = Iterator.continually(getRandomEmailInfo)
如何在不使用 csv 文件的情况下使用 Gatling 创建一个简单的进纸器? 我试过 Gatling 文档中的脚本。 我在文档中看到了一个示例
val random = new util.Random
val feeder = Iterator.continually(Map("email" -> random.nextString(20) + "@foo.com"))
我不明白上面的代码。
我尝试了一个带有使用 csv 文件的馈线的脚本并成功执行。而不是从 csv 文件提供数据,我如何编写一个可以采用定义值的馈送器。
作为docs状态,Feeder
只是Iterator[Map[String, T]]
的别名。正如 Rüdiger Klaehn 强调的那样,您只需要确保您的馈线提供无限的价值流。
既然你说你已经能够 运行 使用内置 csv 供料器的示例,让我们将其转换为我们自己的供料器,以便更清楚上述自定义供料器代码的作用。
让我们看一下来自 advanced tutorial 的示例:
object Search {
val feeder = csv("search.csv").random // 1, 2
val search = exec(http("Home")
.get("/"))
.pause(1)
.feed(feeder) // 3
.exec(http("Search")
.get("/computers?f=${searchCriterion}") // 4
.check(css("a:contains('${searchComputerName}')", "href").saveAs("computerURL"))) // 5
.pause(1)
.exec(http("Select")
.get("${computerURL}")) // 6
.pause(1)
}
这是生成提要的部分:
val feeder = csv("search.csv").random // 1, 2
这是 search.csv
文件:
searchCriterion,searchComputerName
Macbook,MacBook Pro
eee,ASUS Eee PC 1005PE
让我们用新的自定义进纸器替换它:
/* This is our list of choices, we won't ready from csv anymore */
val availableComputers = List(
Map("searchCriterion" -> "MacBook", "searchComputerName" -> "Macbook Pro"),
Map("searchCriterion" -> "eee", "searchComputerName" -> "ASUS Eee PC 1005PE")
)
/* Everytime we call this method we get a random member of availableComputers */
def pickARandomComputerInfo() = {
availableComputers(Random.nextInt(availableComputers.size))
}
/* Continually means every time you ask feeder for a new input entry,
it will call pickARandomComputerInfo to gerenate an input for you.
So iterating over feeder will never end, you will always get
something */
val feeder = Iterator.continually(pickARandomComputerInfo)
这在您提供的示例中很难看出,但您可以拆分它以更好地理解它:
def getRandomEmailInfo() = Map("email" -> random.nextString(20) + "@foo.com")
val feeder = Iterator.continually(getRandomEmailInfo)