目录
了解 get put post delete head patch options 方法,并配置查询参数、HTTP 检查、multipart 和请求正文.
请注意,大多数方法可以采用静态值、gatling表达式语言 (EL) 字符串和函数作为参数。
请求名称
HTTP 支持有一个专用的 DSL,其入口点是 http(requestName) 方法。此请求名称很重要,因为它将在计算报告的统计信息时充当键。 如果同一名称出现在模拟中的多个位置,Gatling 将认为这些请求属于同一类型,并且它们的统计信息将被汇总。
// 常量
http("requestName").get("https://gatling.io")
// 常量
http("#{requestName}").get("https://gatling.io")
// 常量
http(session => session("requestName").as[String]).get("https://gatling.io")
如您所见,请求名称可以是动态的。 但是,我们建议您不要滥用此功能并最终得到大量不同的值。 您会给报告模块带来巨大的负担,并且您的统计数据可能更难分析并且可能没有意义(每个请求名称没有足够的值)。
HTTP 请求必须传递给 exec() 方法才能附加到场景并被执行。
// 内联样式
scenario("ScenarioName")
.exec(http("RequestName").get("url"))
// 非内联样式
val request = http("RequestName").get("url")
scenario("ScenarioName")
.exec(request)
Method和URL
Gatling 为最常用的方法提供了内置插件。 这些只是小写的方法名称。
// 绝对路径
http("name").get("https://gatling.io")
// 绝对路径
http("name").get("#{url}")
// 绝对路径
http("name").get(session => session("url").as[String])
http("name").put("https://gatling.io")
http("name").post("https://gatling.io")
http("name").delete("https://gatling.io")
http("name").head("https://gatling.io")
http("name").patch("https://gatling.io")
http("name").options("https://gatling.io")
http("name").httpRequest("PURGE", "http://myNginx.com")
Gatling 还支持相对 url,请参阅 baseUrl。
Query Parameters
框架和开发人员经常在查询中传递附加信息,即 url 后面的部分。 查询由键=值对组成,用 & 分隔。 这些是命名的查询参数。
例如,https://github.com/gatling/gatling/issues?milestone=1&state=open 包含 2 个查询参数:
milestone=1
:参数名是milestone, 参数值是1state=open
: 参数名是state ,参数值是open
查询参数键和值必须按照 `RFC3986](http://tools.ietf.org/html/rfc3986) 进行 URL 编码。 默认情况下,Gatling 会尝试处理此编码,但您可以禁用它,请参阅 disableUrlEncoding。
为了设置 HTTP 请求的查询参数,您可以:
要么在 url 中传递完整的查询,例如:
http("Issues")
.get("https://github.com/gatling/gatling/issues?milestone=1&state=open")
或者将查询参数一一传递给名为 queryParam 的方法:
// 常量
http("Issues").get("https://github.com/gatling/gatling/issues")
.queryParam("milestone", "1")
.queryParam("state", "open")
// Gatling EL字符串
http("Issues").get("https://github.com/gatling/gatling/issues")
.queryParam("milestone", "#{milestoneValue}")
.queryParam("state", "#{stateValue}")
// 函数
http("Issues").get("https://github.com/gatling/gatling/issues")
.queryParam("milestone", session => session("milestoneValue").as[String])
.queryParam("state", session => session("stateValue").as[String])
您可以使用 multivaluedQueryParam 设置具有多个值的查询参数:
http("name").get("/")
// 常量
.multivaluedQueryParam("param", Seq("value1", "value2"))
http("name").get("/")
// 带有指向 Seq 的 Gatling EL 字符串
.multivaluedQueryParam("param", "#{values}")
http("name").get("/")
// 函数
.multivaluedQueryParam("param", session => Seq("value1", "value2"))
您可以使用 queryParamSeq 和 queryParamMap 一次设置多个查询参数:
http("name").get("/")
.queryParamSeq(Seq(("key1", "value1"), ("key2", "value2")))
http("name").get("/")
.queryParamMap(Map("key1" -> "value1", "key2" -> "value2"))
Headers
header
HTTP 协议使用headers在客户端和服务器之间交换不属于消息主体的信息。
Gatling HTTP 允许您使用 header 和 headers 方法指定您想要的任何请求头。
// 提取标头映射允许您在多个请求中重用这些请求头
val sentHeaders = Map(
"content-type" -> "application/javascript",
"accept" -> "text/html"