2014-09-04 2 views
0

Я очень новичок в Gatling и наполовину сделанный для его использования. Мне нужно написать сценарии автоматизации с ним. У меня нет никакого опыта с ним в любом случае.Gatling/Scala не может найти полезный ключ сеанса JSON

Когда я пытаюсь запустить несколько сценариев, я получаю «session_key» как часть ответа JSON после входа в систему. Я попытался следовать инструкциям из Интернета, сохранил это значение, но когда я попытаюсь использовать его дальше в своем втором сценарии, язык выражения не может его найти.

Я подтвердил свое выражение JSONPath для него, и это кажется правильным.

{"result":1,"resultType":"ack","output":{"session_key":"a value for the session key goes here"},"errorMessage":false,"errorCode":false,"additional":{"locationtabs":["tab 1","tab 2","tab 3"]}} 

Я также перечислил свой код ниже, но заменил данные об использовании с помощью данных для моего вопроса.

package basic 

import com.excilys.ebi.gatling.core.Predef._ 
import com.excilys.ebi.gatling.http.Predef._ 
import com.excilys.ebi.gatling.jdbc.Predef._ 
import com.excilys.ebi.gatling.http.Headers.Names._ 
import com.jayway.jsonpath._ 
import akka.util.duration._ 
import bootstrap._ 

class GetLocations extends Simulation 
{ 


    val httpConf = httpConfig 
     .baseURL("https://myURL") 
     .acceptCharsetHeader("ISO-8859-1,utf-8;q=0.7,*;q=0.7") 
     .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") 
     .acceptEncodingHeader("gzip, deflate") 
     .acceptLanguageHeader("fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3") 
     .disableFollowRedirect 

    val scn = scenario("Login Test") 
     .exec(
      http("requestLogin") 
      .post("/restapi/login") 
      .param("username", "a username") 
      .param("password", "a password") 
      .param("client_uid", "testUid") 
      .check(jsonPath("$.result").is("1")) 
      .check(jsonPath("$.output.session_key").findAll.saveAs("session_key")) 

     ).pause(15) 



    val getLocations = scenario("Get Locations") 
     .exec(
      http("getLocations") 
      .post("/restapi/get_employee_favouritelocations") 
      .param("client_uid","testUid") 
      .param("clientType","automatedTest") 
      .param("session_key","${session_key}") 
      .check(jsonPath("$.result").is("1")) 
     ) 

    setUp(scn.users(50).ramp(50).protocolConfig(httpConf), 
      getLocations.users(50).ramp(50).protocolConfig(httpConf) 
     ) 

} 

Любой помощи вы можете предоставить ценятся как это давало мне головную боль в течение недели и, к сожалению, только я готов приступить к работе с этим в настоящее время.

ответ

0

У вас есть два разных сценария, в которых пользователи могут сохранять некоторые данные в своем сеансе, а у другого есть свои пользователи, пытающиеся извлечь данные из своего сеанса.

Это разные виртуальные пользователи, поэтому вы не сохраняете и не выбираете с одного и того же места.

В принципе, вы делаете это неправильно. Непонятно, чего вы пытаетесь достичь.

+0

Проблема была решена. Еще раз спасибо Стефану. – user3498133