Gatling: извлечение нескольких групп в .check (регулярное выражение - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь использовать один .check (регулярное выражение для извлечения нескольких значений. Код ниже представляет извлечение 3 групп.

 val goToProduct = http("""GoTo_${product}""")
.get("""${product}""")
.headers(headers_0)
.check(regex("""name="([\s\S]+?)" value="(.+)" id="(.+)"""").ofType[(String,String,String)].saveAs("description")

После этого я пытаюсь использовать извлеченные значения отдельно (например, description._1 как Tuple3 или description (1) как Collection). Но это всегда терпит неудачу.

Это работает, но, возможно, есть более удобный способ сделать это (например, val._1)

session("description").validate[(String, String, String)].map { case 
(prod_name, prod_value, prod_id) =>
session.setAll("prod_name" -> prod_name, "prod_value" -> prod_value, 
"prod_id" -> prod_id)

Попытка этого

.exec { session => 
println(session("${description._1}").as[String]) 
session }

Will give an error: 'hook-1' crashed with 'j.u.NoSuchElementException: No attribute named '${description._1}' is defined', forwarding to the next one

Эта строка

println(session("description").as[String])

Shows Tuple3: (addtocart_37.EnteredQuantity,1,/addproducttocart/details/37/1)

1 Ответ

0 голосов
/ 27 июня 2019

gatling EL поддерживает кортежи, так что вы можете использовать вызовы типа

"${description._1}"

для доступа к продукту, например,

Чтобы получить значение, чтобы использовать его где-то, кроме как вВызов dsl, который принимает выражение, вы можете просто получить его в действии сеанса (где вы не можете использовать EL)

exec(session => {
  println(session("description").as[(String, String, String)]._1)
  session
})
...