Gatling — передача данных из фидера в метод в exec

#java #scala #csv #gatling

#java #scala #csv #gatling

Вопрос:

Я новичок в Gatling и пытаюсь повторно использовать тестовые сценарии, которые я использую для функционального тестирования, которые я написал в RestAssured / Java для работы с gatling. Итак, что я делаю для вызова своих методов входа в систему, я вызываю их в wrapperForJavaMethods методе (строка 4) перед вызовом последнего метода в «gatling fashion» (строка 6). Если я просто помещаю строки в качестве аргументов в строку 4, это работает отлично, но когда я пытаюсь использовать переменную фидера ${login} , печатается, для сравнения в строке 7 (где нет логического смысла вызывать переменную фидера, я просто сделал это для целей отладки) печатаются данные из csv. Есть ли в любом случае, в котором я могу передавать данные из фидера csv в параметры метода или они могут быть только. вызывается в сеансе?

   val csvCredentails = csv("data/data.csv")//1
  val scenario = scenario("my custom scenario")//1
    .feed(csvCredentails)//3
    .exec(wrapperForJavaMethods("${login}","${pass}"))//4
    .exec(http("login")//5
      .post("/login")//6
      .check(status is "${login}")//7

  def wrapperForJavaMethods(login: String, pass: String): Unit = {
    print("login11 "   username   " pass "   password)
    objectOfJavaClass.inputCredentials(username, password)
    objecyOfJavaClass.anotherJavaMethod
    objecyOfJavaClass.anotherJavaMethod2
    objecyOfJavaClass.anotherJavaMethod3
...

}
 

Ответ №1:

Отказ от ответственности: основатель Gatling здесь

Во-первых, я очень скептически отношусь к тому, что вы пытаетесь создать.

  • RestAssured и другие функциональные инструменты тестирования не реализованы для большой нагрузки. Как правило, они не создаются поверх быстрого неблокирующего HTTP-клиента. Это не просто их целевой вариант использования. Повторный запуск из оркестратора Gatling не позволит ему генерировать большие нагрузки, как это делает подлинный HTTP-модуль Gatling. Более того, такие блокирующие API-интерфейсы не работают хорошо, когда они подключены к асинхронному движку, такому как Gatling.
  • Вы действительно уверены, что использование ваших подключений будет соответствовать тому, что происходит в системе вашей цели? RestAssured будет либо использовать общий пул соединений, либо вообще не использовать пул соединений. Я подозреваю, что вы не сможете реализовать пул соединений для каждого виртуального пользователя. Опять же, инструменты функционального тестирования не предназначены для этого.

Тогда, что касается кода, которым вы поделились, это не то, как работает язык выражений Gatling. Вам нужно будет разрешить ваши параметры в функции. Пожалуйста, проверьте API сеанса.