2014-09-04 39 views
0

我對加特林很新,並有一半使用它,我需要用它寫自動化腳本。我沒有任何經驗。加特林/斯卡拉是無法找到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

問題解決了。再次感謝Stephane。 – user3498133 2014-09-11 10:04:07