我试图创建一个Gatling场景,需要在测试期间将协议切换到不同的主机。用户旅程是
https://example.com/page1
https://example.com/page2
https://accounts.example.com/signin
https://example.com/page3
所以作为单个场景的一部分,我需要以太空切换方案设置中定义的protocol
,或者切换协议上定义的baseUrl
,但我无法弄清楚怎么做。
基本场景可能看起来像
package protocolexample
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class Example extends Simulation {
val exampleHttp = http.baseURL("https://example.com/")
val exampleAccountsHttp = http.baseURL("https://accounts.example.com/")
val scn = scenario("Signin")
.exec(
http("Page 1").get("/page1")
)
.exec(
http("Page 2").get("/page2")
)
.exec(
// This needs to be done against accounts.example.com
http("Signin").get("/signin")
)
.exec(
// Back to example.com
http("Page 3").get("/page3")
)
setUp(
scn.inject(
atOnceUsers(3)
).protocols(exampleHttp)
)
}
我只需要弄清楚如何以太网切换主机或协议进行第3步。我知道我可以创建多个场景,但这需要是跨多个主机的单个用户流。
我已尝试直接使用其他协议
exec(
// This needs to be done against accounts.example.com
exampleAccountsHttp("Signin").get("/signin")
)
导致
protocolexample/example.scala:19: type mismatch;
found : String("Signin")
required: io.gatling.core.session.Session
exampleAccountsHttp("Signin").get("/signin")
并更改请求中的基本网址
exec(
// This needs to be done against accounts.example.com
http("Signin").baseUrl("https://accounts.example.com/").get("/signin")
)
导致
protocolexample/example.scala:19: value baseUrl is not a member of io.gatling.http.request.builder.Http
答案 0 :(得分:7)
您可以使用绝对URI(包含协议)作为Http.get
,Http.post
等参数。
class Example extends Simulation {
val exampleHttp = http.baseURL("https://example.com/")
val scn = scenario("Signin")
.exec(http("Page 1").get("/page1"))
.exec(http("Page 2").get("/page2"))
.exec(http("Signin").get("https://accounts.example.com/signin"))
.exec(http("Page 3").get("/page3"))
setUp(scn.inject(atOnceUsers(3))
.protocols(exampleHttp))
}
请参阅:http://gatling.io/#/cheat-sheet/2.1.7
baseURL:设置应用配置的方案的所有相对网址的基本网址。