【问题标题】:Simple feeder in Gatling without using a csv fileGatling 中的简单馈线,无需使用 csv 文件
【发布时间】:2016-02-11 19:55:29
【问题描述】:

如何在不使用 csv 文件的情况下在 Gatling 中创建简单的馈线? 我已经尝试过 Gatling 文档中的脚本。 我在文档中看到了一个示例

val random = new util.Random
val feeder = Iterator.continually(Map("email" -> random.nextString(20) + "@foo.com"))

我不明白上面的代码。

我尝试了一个带有使用 csv 文件的 feeder 的脚本并成功执行。我如何编写一个可以采用定义值的馈线,而不是从 csv 文件中馈送数据。

【问题讨论】:

  • 发布一个更完整的示例,以便人们可以帮助您。馈线只是一种产生无限价值流的东西。

标签: scala gatling


【解决方案1】:

作为docs 状态,Feeder 只是Iterator[Map[String, T]] 的别名。您只需要确保您的 feeder 提供 Rüdiger Klaehn 强调的无限的值流。

既然您说您已经能够使用内置的 csv feeder 运行一个示例,那么让我们将其转换为我们自己的 feeder,以便更清楚上述自定义 feeder 代码的作用。

让我们看一下来自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)

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多