Gatling:HTTP Request

Gatling 是一个强大的性能测试工具,本篇博客详细介绍了如何配置HTTP请求,包括请求名称、方法和URL、查询参数、headers、检查、请求正文等。文中还提到了动态请求名称的使用注意事项,以及各种设置请求参数的方法,如queryParam、header、formParam等。此外,还讨论了HTTP检查、资源获取和高级选项,如requestTimeout、basicAuth和proxy等。
摘要由CSDN通过智能技术生成

目录

请求名称

Method和URL

Query Parameters

Headers 

header

asXXX

检查

Request Body

StringBody

RawFileBody

ElFileBody 

PebbleStringBody

PebbleFileBody 

ByteArrayBody

InputStreamBody

Forms

formParam

form

formUpload

Multipart

bodyPart

StringBodyPart

RawFileBodyPart

ElFileBodyPart

PebbleStringBodyPart

PebbleFileBodyPart

ByteArrayBodyPart

Pre-Processing

processRequestBody

Resources

高级选项

requestTimeout

basicAuth 和 digestAuth

proxy

virtualHost

disableFollowRedirect

disableUrlEncoding

silent

sign

transformResponse


了解 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, 参数值是1
  • state=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 

HTTP 协议使用headers在客户端和服务器之间交换不属于消息主体的信息。
Gatling HTTP 允许您使用 header 和 headers 方法指定您想要的任何请求头。

 

// 提取标头映射允许您在多个请求中重用这些请求头
val sentHeaders = Map(
  "content-type" -> "application/javascript",
  "accept" -> "text/html"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值