我如何通过SBT实际运行Gatling测试

时间:2017-04-05 16:15:19

标签: scala gatling

我正在尝试使用Gatling加载测试Web服务。这是我的build.sbt

import io.gatling.sbt.GatlingPlugin

val gatlingVersion = "2.2.4"

val dependencies = Seq(
   "io.gatling" % "gatling-core" % gatlingVersion,
   "io.gatling" % "gatling-http" % gatlingVersion
)

lazy val project =
   Project("gattling-tests", file("."))
      .enablePlugins(GatlingPlugin)
      .settings(
         javaOptions in Gatling := overrideDefaultJavaOptions("-Xmx4G"),
         scalaVersion := "2.12.1",
         libraryDependencies ++= dependencies
      )

在tests文件夹下,我创建了一个扩展了Simulation的类,它有我的场景和http请求。

import io.gatling.core.Predef._
import io.gatling.http.Predef._

class ShieldAuthLoadTests extends Simulation {
   val httpConf = http
      .baseURL("http://localhost:8080/api/1/")
      .acceptHeader("application/json")
      .contentTypeHeader("json")

   val login = http("Login")
      .post("login")
      .formParam("username", "foo")
      .formParam("password", "bar")
      .check(status.is(200), jsonPath("$..response.id").ofType[String].saveAs("id"))

   val get = http("get")
      .get("/api/api1")
      .header("token1", "$id")
      .check(status.is(200), jsonPath("$..response").exists)

   val scn = scenario("scn")
      .exec(login)
      .pause(3)
      .exec(get)

   setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))
}

我的希望是,当我做sbt gatling:test时,它将进行加特林测试。但是当我运行sbt gatling:test时,它就会在没有运行测试的情况下取得成功。

quickstart文档说$GATLING_HOME/bin/gatling.sh但我没有gatling.sh,因为我想通过SBT进行测试。

2 个答案:

答案 0 :(得分:5)

由于我遇到类似的问题,文档有点不一致。

我总是将我的项目建立在this上以确保。

无论如何,它看起来像你的依赖项的问题。请尝试将它们更改为此...

val dependencies = Seq(
  "io.gatling.highcharts" % "gatling-charts-highcharts" % "2.2.4" % "test,it",
  "io.gatling"            % "gatling-test-framework"    % "2.2.4" % "test,it"
)

或者查看here

答案 1 :(得分:0)

检查是否在src/test/scala文件夹中创建了模拟,请参见https://gatling.io/docs/3.0/extensions/sbt_plugin/#default-settings