网上查了一圈,关于 gatling 脚本相关的信息很少,一般的 gatling 多数是使用一个简单例子来演示工具,与实际使用中的差距很大。整理了一份 gatling 脚本改造的实际例子,忽略了很多生成的 httpProtocol,Header 信息
Ps:最近使用过 gatling 录制 Postman 请求的时候遇到两个问题,如果有过来者,麻烦解答一下
1.使用 Postman 录制的时候,只能录制 Http 的请求,对于 Https 的请求,录制不成功
2.录制 Postman 的的请求体会存放在 bodies 目录下的 txt 文件中,一个系列的的接口测试中,后续报文需要使用前面报文的响应内容,如何将获取的响应结果参数,替换到 bodies 目录下的 txt 文件中
object Login{
val login = group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
)
}
}
object Login{
val login = repeat(times = 1){
group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
)
}
}
}
object Login{
val login = during(1 minutes){
group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
)
}
}
}
object Login{
val login = during(1 minutes){
group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
.check(substring("ID").find.exists)
)
}
}
}
object Login{
val login = during(1 minutes){
group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
.check(regex("ID=(.+)?<").saveAs("ID")))
)
}
}
}
val user = csv("").circular
object Login{
val login = during(1 minutes){
group(name = "login"){
feed(user)
.exec(http()
.post(url=s"${username}")
.headers(header)
.body()
)
}
}
}
def calDate():(String) = {
val now: Date = new Date()
val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒")
var dataNow = dateFormat.format(now)
(dataNow)
}
object Login{
val login = during(1 minutes){
group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
)
.exec(session=>{
val (dataNow) = calDate()
session.set("dataNow", dataNow)
println(dataNow)
session
}
)
}
}
}
object Login{
val login = repeat(times = 1){
group(name = "login"){
exec(http("")
.post("/")
.headers(headers_0)
.body()
)
.exec(getCookieValue(CookieKey("CookieKey").saveAs("CookieKey")))
}
}
}
val scn =scenario("GatlingTest").exec(Login.login )
setUp(scn .inject(atOnceUsers(1))).protocols(httpProtocol)