Гатлинг не сохранит токен доступа - PullRequest
1 голос
/ 15 октября 2019

В этом примере ниже я вижу, что путь к токену является правильным, потому что, когда я изменяю его, я получаю ошибки, такие как find.exists. ничего не нашел. Но по какой-то причине я не могу сохранить токен. Мне не удалось создать запрос: не определен атрибут с именем 'Token'

import scala.concurrent.duration._
import io.gatling.jsonpath.JsonPath

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._
import io.gatling.jsonpath.AST._

class Uus extends Simulation {

    val httpProtocol = http
        .baseUrl("https://testsite.com")
        .inferHtmlResources()
        .userAgentHeader("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36")

    val autentimata = Map(
        "Access-Control-Request-Headers" -> "authorization",
        "Access-Control-Request-Method" -> "GET",
        "Origin" -> "https://testsite.com")

    val autentitud = Map(
        "Accept" -> "application/json, text/plain, */*",
        "Origin" -> "https://testsite.com",
        "authorization" -> "Bearer ${Token}")

    val uri2 = "https://testsite.com"

    val scn = scenario("RecordedSimulation")

        .exec(http("savingtoken")
            .options("/token/get?rememberMe=true")
            .headers(autentimata)
            .resources(http("request_2")
            .get("/token/get?rememberMe=true")
           // .check(jsonPath("$.data.accessToken").saveAs("Token"))
            .check(status.is(200), jsonPath("$.data.accessToken").ofType[String].saveAs("Token"))
            .headers(autentimata)
            .basicAuth("11111111111","P2rooliall"),
            http("sisselogitud")
            .options("/users/11111111111")
            .headers(autentimata),
            http("kasutaja lehele")
            .get("/users/11111111111")
            .headers(autentitud)
            //.check(jsonPath("$.data.accessToken").saveAs("token"))
            .check(status.is(200)),
            http("sündmuste lehele")
            .options("/events?page=0&size=25&relation=ASSIGNEE,CREATOR&status=OPEN,REOPEN,FINISHED,ARCHIVED&sort=createdDate,desc")
            .headers(autentimata),
            http("sündmusteleht")
            .get("/events?page=0&size=25&relation=ASSIGNEE,CREATOR&status=OPEN,REOPEN,FINISHED,ARCHIVED&sort=createdDate,desc")
            .headers(autentitud)
            .header("authorization", "Bearer ${Token}")


    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

1 Ответ

0 голосов
/ 20 октября 2019

Я думаю, что проблема в этой строке:

"авторизация" -> "Носитель $ {Token}"

из этого блока:

 val autentitud = Map(
        "Accept" -> "application/json, text/plain, */*",
        "Origin" -> "https://testsite.com",
        "authorization" -> "Bearer ${Token}")

, поскольку No attribute named 'Token' is defined указывает, что вы пытаетесь использовать переменную, еще не определенную. И действительно, вы сохраняете Token только во время выполнения сценария.

Состояния документации документации Expession EL :

Этот язык выражений работает только со значениями String, являющимисяперешел на методы Гатлинга DSL. Такие строки анализируются только один раз, когда создается имитация Гатлинга.

Таким образом, решение состоит в том, чтобы реорганизовать ваш код и передать блок внутри заголовков, даже если он будетозначает дублирование кода.

И вы можете попытаться проверить, извлечен ли ваш токен, распечатав его значение следующим образом:

.exec{
        session=>{
                println(" Token value" + session("Token").as[String])
                session

      }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...