使用动态方法从集合中获取httpRequest

时间:2016-05-03 20:10:59

标签: scala gatling

我想从结构化数据集合(StructuredDataCollection)构建Gatling场景。

我的问题是,我无法通过"方法" (如在HTTP方法中)从集合中的元素到实际测试的http调用。

这是一个代码段。

  def testScenario(duration: Int) = scenario("SO").during(duration) {
    exec {
      session => {
        val test = StructuredDataCollection.next()
        val title = test.title
        val method = test.method // Not being used, because it does not work like that :(
        val endpoint = test.endpoint
        val requiredParameters = test.requiredParameters
        val code = test.code
        session
          .set("title", title)
          .set("methodFUG", method).set("endpoint", endpoint)
          .set("requiredParameters", requiredParameters)
          .set("code", code)
      }
    }
    .exec(
      http("${title}")
        .httpRequest("get", "${endpoint}") // TODO: method can't be passed in as an expression.
        .queryParamMap("${requiredParameters}")
        .check(status.is("${code}"))
    )
  }

正如您所看到的,我已经硬编码了" get"但是我需要将其替换为来自当前所选项目的方法属性的实际值集合。

不幸的是,Gatling的DSL在您预期的所有地方都无法使用,并且它只是以字符串形式阅读。

我花了一些时间才意识到这一点 http("${title}").httpRequest("${methodFUG}", "${endpoint}")实际上会使用无效方法进行HTTP调用" $ {methodFUG}"而不是集合元素的值,可以是" GET"," POST"," PUT"," DELETE"等等上。

1 个答案:

答案 0 :(得分:0)

httpRequest签名为(method: String, url: Expression[String]),请参阅documentation

它不能使用Expression,只能使用静态String。