我想从结构化数据集合(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"等等上。
答案 0 :(得分:0)
httpRequest
签名为(method: String, url: Expression[String])
,请参阅documentation。
它不能使用Expression,只能使用静态String。