本篇主要介绍在http请求post传参的场景,有了之前GET相关的介绍,相信POST的使用大家也能快速的掌握。POST的请求处理和GET请求最大的区别无非是参数的传递方式,所以在Gatling脚本里主要是去设置http body Content-Type。
本篇主要介绍json和form表单两种参数提交方式的处理: JSON方式
import io.gatling.core.Predef._
import io.gatling.core.scenario.Simulation
import io.gatling.http.Predef._
class JsonSimulation extends Simulation {
val httpConf = http.baseURL("http://127.0.0.1:7001/tst")
//注意这里,设置提交内容type
val headers_json = Map("Content-Type" -> "application/json")
val scn = scenario("json scenario")
.exec(http("test_json") //http 请求name
.post("/order/get") //post url
.headers(headers_json) //设置body数据格式
//将json参数用StringBody包起,并作为参数传递给function body()
.body(StringBody("{\"orderNo\":201519828113}")).asJSON)
setUp(scn.inject(atOnceUsers(10))).protocols(httpConf)
}
Form方式
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class FormSimulation extends Simulation {
val httpConf = http
.baseURL("http://computer-database.")
//注意这里,设置提交内容type
val contentType = Map("Content-Type" -> "application/x-www-form-urlencoded")
//声明scenario
val scn = scenario("form Scenario")
.exec(http("form_test") //http 请求name
.post("/computers") //post地址, 真正发起的地址会拼上上面的baseUrl http://computer-database./computers
.headers(contentType)
.formParam("name", "Beautiful Computer") //form 表单的property name = name, value=Beautiful Computer
.formParam("introduced", "2012-05-30")
.formParam("discontinued", "")
.formParam("company", "37"))
setUp(scn.inject(atOnceUsers(1)).protocols(httpConf))
}
如果需要动态参数,可参考GET请求动态参数的处理。
到这里Gatling的介绍基本就结束了,Gatling的测试脚本本身就不复杂,主要面向http请求的测试。我们从官方下载的包里有非常多的例子适合各种场景,我们在实际使用中一般会对其进行拷贝,然后修改成自己需要的,所以测试过程中大家也不要有什么负担。
|