【问题标题】:Generate Gatling requests from dynamic data从动态数据生成 Gatling 请求
【发布时间】:2015-09-22 16:15:31
【问题描述】:

我需要遍历动态生成的应用程序数据,并且在 Gatling 文档中看不到任何详细示例。我正在为可预测变量使用馈线,但我应该如何从动态中获取请求?我试过使用 Checks 但我不确定这是否是正确的方法。然后我如何迭代捕获的数据并生成新的 get() 请求?

例如:

val userLinks = exec(
    http("Follow Links")
    .get("/userLinks/")
    .headers(...)
    .check(
        regex("""__doPostBack('ct100$PageContent$FollowMe','(.*)')""")
        .ofType[(String)].findAll.optional.saveAs("FollowMeOptions")
    )
)

以上是正确的方法吗?如果是,我如何使用结果(“FollowMeOptions”)?我觉得这是一个基本场景,应该 - 并且很可能 - 包含在文档中,但我没有运气在那里(或堆栈上)找到具体示例。

谢谢!

【问题讨论】:

    标签: scala gatling


    【解决方案1】:

    我想我找到了正确的方法和语法。注意正则表达式转义:

    val userLinks = exec(
        http("Follow Links")
        .get("/userLinks/")
        .headers(...)
        .check(
            regex("""__doPostBack\('ct100\$PageContent\$FollowMe','(.*)'\)""")
            .ofType[(String)].findAll.optional.saveAs("FollowMeOptions")
        )
    ).foreach("${FollowMeOptions}", "option") {
        exec(http("request option").get("/path/to/$option").headers(...)
    }
    

    【讨论】:

      【解决方案2】:

      这是我对此的回答:问题陈述:我必须在配置的时间内重复 gatling 执行,并且我的步骤名称必须是动态的。

      object UrlVerifier {
      
        val count = new java.util.concurrent.atomic.AtomicInteger(0)
        val baseUrl = Params.applicationBaseUrl
      
        val accessUrl = repeat(Params.noOfPagesToBeVisited,"index") {
          exec(session=> {
            val randomUrls: List[String] = UrlFeeder.getUrlsToBeTested()
            session.set("index", count.getAndIncrement).set("pageToTest", randomUrls(session("index").as[Int]))
          }
          ).
          exec(http("Accessing Page ${pageToTest}")
            .get(baseUrl+"${pageToTest}")
            .check(status.is(200))).pause(Params.timeToPauseInSeconds)
        }
      

      所以基本上 UrlFeeder 给了我字符串列表(要测试的 url),在 exec 中,我们使用 count (AtomicInteger),并使用它填充一个名为“index”的变量,其值将从 0 开始,并将在每次迭代中被 getAndIncremented。这个“索引”变量将在 repeat() 循环中使用,因为我们指定 counterVariable 的名称用作“索引”

      另外检查一下,我正在定义 http 请求的动态名称,例如访问页面“xyz”。 这有助于我更好地理解报告,例如哪个确切的 url 失败。

      希望它也对其他人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2018-09-27
        • 2015-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多