Gatling - 要求失败:没有设置场景
Gatling - requirement failed: No scenario set up
我是编程的新手,我试图启动我的测试但我得到:线程“主”中的异常java.lang.IllegalArgumentException:要求失败:没有设置场景
即使我设置了场景(这很混乱)
我很确定很明显像我这样的新手无法弄清楚不幸的是。
我尝试使缓存无效,然后重新加载项目。
我正在使用 intelij + maven
package simulations
import io.gatling.core.Predef._
import io.gatling.core.structure.{ChainBuilder, ScenarioBuilder}
import io.gatling.http.Predef._
import io.gatling.http.protocol.HttpProtocolBuilder
class GatlingDemoStore extends Simulation {
val domain = "demostore.gatling.io"
val httpProtocol: HttpProtocolBuilder = http
.baseUrl("http://" + domain)
object login {
def userlogin: ChainBuilder = {
exec(http("Login User")
.post("/login")
.formParam("_csrf", "${csrfValue}")
.formParam("username", "user1")
.formParam("password", "pass"))
}
}
object CmsPages {
def homepage: ChainBuilder = {
exec(http("Load Home Page")
.get("/")
.check(status.is(200))
.check(regex("<title>Gatling Demo-Store</title>").exists)
.check(css("#_csrf", "content").saveAs("csrfValue")))
}
def aboutus: ChainBuilder = {
exec(http("Load Home Page")
.get("/about-us")
.check(status.is(200))
.check(substring("About Us")))
}
def categories: ChainBuilder = {
exec(http("Load Categories Page")
.get("/category/all")
.check(status.is(200)))
.pause(10)
}
def productpage: ChainBuilder = {
exec(http("Load Product Page")
.get("/product/black-and-red-glasses")
.check(status.is(200)))
.pause(15)
}
def addtocart: ChainBuilder = {
exec(http("Add Product to Cart")
.get("/cart/add/19"))
}
def viewcart: ChainBuilder = {
exec(http("View Cart")
.get("/cart/view"))
}
def checkout: ChainBuilder = {
exec(http("Checkout")
.get("/cart/checkout"))
}
val User: ScenarioBuilder = scenario("DemoStore Simulation")
.exec(CmsPages.homepage)
.pause(5)
.exec(CmsPages.aboutus)
.pause(5)
.exec(CmsPages.categories)
.pause(20)
.exec(CmsPages.productpage)
.pause(5)
.exec(CmsPages.addtocart)
.pause(2)
.exec(login.userlogin)
setUp(
User.inject(atOnceUsers(1))
).protocols(httpProtocol)
}
}
我重新格式化了你的代码,这样你的错误就更明显了:你调用 setUp
不是在 GatlingDemoStore
class 的正文中,而是在 class 的正文中=12=] 永远不会加载的对象(在 Scala 中,对象是延迟加载的,在这里你永远不会调用它)。
在 GatlingDemoStore
class 的正文中移动 setUp
。
重要说明:由于您是编程新手,您可能应该使用 Java(从 Gatling 3.7 开始支持)而不是 Scala。
非常感谢您的帮助,不胜感激。
似乎是菜鸟的错误..
这实际上是个好主意,我正在研究如何做到这一点。
我是编程的新手,我试图启动我的测试但我得到:线程“主”中的异常java.lang.IllegalArgumentException:要求失败:没有设置场景 即使我设置了场景(这很混乱) 我很确定很明显像我这样的新手无法弄清楚不幸的是。 我尝试使缓存无效,然后重新加载项目。 我正在使用 intelij + maven
package simulations
import io.gatling.core.Predef._
import io.gatling.core.structure.{ChainBuilder, ScenarioBuilder}
import io.gatling.http.Predef._
import io.gatling.http.protocol.HttpProtocolBuilder
class GatlingDemoStore extends Simulation {
val domain = "demostore.gatling.io"
val httpProtocol: HttpProtocolBuilder = http
.baseUrl("http://" + domain)
object login {
def userlogin: ChainBuilder = {
exec(http("Login User")
.post("/login")
.formParam("_csrf", "${csrfValue}")
.formParam("username", "user1")
.formParam("password", "pass"))
}
}
object CmsPages {
def homepage: ChainBuilder = {
exec(http("Load Home Page")
.get("/")
.check(status.is(200))
.check(regex("<title>Gatling Demo-Store</title>").exists)
.check(css("#_csrf", "content").saveAs("csrfValue")))
}
def aboutus: ChainBuilder = {
exec(http("Load Home Page")
.get("/about-us")
.check(status.is(200))
.check(substring("About Us")))
}
def categories: ChainBuilder = {
exec(http("Load Categories Page")
.get("/category/all")
.check(status.is(200)))
.pause(10)
}
def productpage: ChainBuilder = {
exec(http("Load Product Page")
.get("/product/black-and-red-glasses")
.check(status.is(200)))
.pause(15)
}
def addtocart: ChainBuilder = {
exec(http("Add Product to Cart")
.get("/cart/add/19"))
}
def viewcart: ChainBuilder = {
exec(http("View Cart")
.get("/cart/view"))
}
def checkout: ChainBuilder = {
exec(http("Checkout")
.get("/cart/checkout"))
}
val User: ScenarioBuilder = scenario("DemoStore Simulation")
.exec(CmsPages.homepage)
.pause(5)
.exec(CmsPages.aboutus)
.pause(5)
.exec(CmsPages.categories)
.pause(20)
.exec(CmsPages.productpage)
.pause(5)
.exec(CmsPages.addtocart)
.pause(2)
.exec(login.userlogin)
setUp(
User.inject(atOnceUsers(1))
).protocols(httpProtocol)
}
}
我重新格式化了你的代码,这样你的错误就更明显了:你调用 setUp
不是在 GatlingDemoStore
class 的正文中,而是在 class 的正文中=12=] 永远不会加载的对象(在 Scala 中,对象是延迟加载的,在这里你永远不会调用它)。
在 GatlingDemoStore
class 的正文中移动 setUp
。
重要说明:由于您是编程新手,您可能应该使用 Java(从 Gatling 3.7 开始支持)而不是 Scala。
非常感谢您的帮助,不胜感激。 似乎是菜鸟的错误.. 这实际上是个好主意,我正在研究如何做到这一点。