2016-08-10 2 views
0

Jmeter: Как извлечь & хранить идентификатор учетной записи в переменной от ответа с использованием препроцессора BeanShell? Можем ли мы использовать JSON или регулярное выражение для этого.Jmeter: Разбор ответов JSON в BeanShell Prepocessor и храните его в переменной

Мой ответ, что некоторые выглядят как:

{ 
    "address":{ 
     "street1":"6550 Vallejo Street", 
     "street2":"", 
     "city":"Emeryville", 
     "state":"CA", 
     "zipcode":"98456", 
     "country":"Uk" 
    }, 
    "timezone":"US/Pacific-New", 
    "reference":"fe_qa001", 
    "token":"ns7h4rqVZegSZG6yZls6", 
    "login":"[email protected]", 
    "accountId":-9223372036762408565, 
    "firstName":"qa029", 
    "lastName":"svcqa", 
    "email":"[email protected]", 
    "component":[ 
     { 
     "type":1, 
     "reference":"12-1", 
     "version":"1", 
     "base":"Plastic", 
     "zipcode":"94556", 
     "bedsize":"high", 
     "bed":false, 
     "componentId":0, 
     "code":"P5", 
     "sku":"abcd", 
     "serial":"1234", 
     "purchaseDate":1372723200000, 
     "chamber":2 
     } 
    ] 
} 

Я новичок в Jmeter. Так кто может мне помочь здесь. Это требование похоже на то, чтобы вставить идентификатор учетной записи из приведенного ниже ответа и сохранить его в переменной с помощью BeanShell Preprocessor.

+0

Я попытался следующий код, но он не работает: Строка jsonString = prev.getResponseDataAsString(); JsonObject accountId = JsonObject.readFrom (jsonString); JsonArray accountId = accountId.get (1) .asObject(). Get ("accountId"). AsString(); vars.put ("accountId_BSH", accountId); –

ответ

2

Я не знаю, откуда вы взяли этот код, но он выглядит, как он использует minimal-json библиотеку и использует его странным образом, так

  1. Убедитесь минимальной json.jar в JMeter
  2. классам
  3. Вы перезагрузили JMeter, чтобы выбрать .jar до
  4. у вас есть весь необходимый импорт

Кроме того, ваш код, кажется, не работать должным образом с минимальным-JSon-0.9.4.jar , вы должны изменить его, как:

import com.eclipsesource.json.JsonObject; 

String jsonString = prev.getResponseDataAsString(); 
JsonObject accountId = JsonObject.readFrom(jsonString); 
vars.put("accountId_BSH",String.valueOf(accountId.getLong("accountId",0L))); 

Вы можете сделать то же самое проще с помощью JSR223 PostProcessor and Groovy language. Groovy имеет встроенную поддержку JSON, поэтому вам не нужно добавлять никаких .jars. Ссылка Groovy код:

import groovy.json.JsonSlurper 

def jsonSlurper = new JsonSlurper(); 
def response = jsonSlurper.parseText(prev.getResponseDataAsString()); 
vars.put("accountId_BSH", response.accountId.toString()); 

И, вероятно, лучший способ использует JSON Path PostProcessor доступна с JMeter 3.0. Соответствующая конфигурация будет что-то вроде:

  • имена переменных: accountId_BSH
  • JSON Path Expressions: $.accountId

JSON Path Post