Длина не работает в JSON Extractor в Jmeter - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно получить количество карт из файла JSON.Для этого я использовал $.storedCards.cards.lenght в JSON Extractor, но он не работает.Появляется сообщение об ошибке:

Параметры AS_PATH_LIST и ALWAYS_RETURN_LIST недопустимы при использовании функций пути!

После этого я попробовал JSR223 PostProcessor со следующим скриптом на goovy

 def jsonText = '''${AllCards}''' //${AllCards} has json value
 def json = new JsonSlurper().parseText(jsonText)
 log.info( "Json length---------->"+json.resource.size())
 ${CardsCount} = props.get("4") //vars.put(json.resource.size.toString())

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

Мой файл json

    "storedCards":
    {
        "cards":
        [
            {
                "CardId":"123",
                "cardBrand":"Visa",
                "lastFourDigits":"2968",
               },
            {
                "CardId":"321",
                "cardBrand":"Visa",
                "lastFourDigits":"2968",
              },
     ..........
        ],

Как я могу получить счетчик карт и установить мои Переменные?что я должен использовать для этого?

1 Ответ

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

Ваши данные JSON кажутся недействительными.Предполагая, что у вас есть действующий JSON, как показано ниже, я отвечаю на ваш вопрос.

{
    "storedCards": {
        "cards": [
            {
                "CardId": "123",
                "cardBrand": "Visa",
                "lastFourDigits": "2968"
            },
            {
                "CardId": "321",
                "cardBrand": "Visa",
                "lastFourDigits": "2968"
            }
        ]
    }
}

Вам не нужно писать код на Groovy, это можно решить с помощью JSON Extractor .Вместо использования функции длины используйте предикат пути JSON, например, такой:

$.storedCards.cards[*]

Хотя переменная, которую вы использовали в JSON Extractor, не даст решения сразу, другая функция JMeter помогает - __ RandomFromMultipleVars

Выдержка из документации -

Функция RandomFromMultipleVars возвращает случайное значение на основе значений переменных, предоставленных переменными источника.Переменные могут быть простыми или многозначными, поскольку они могут быть сгенерированы следующими экстракторами:

Boundary Extractor
Regular Expression Extractor
CSS Selector Extractor
JSON Extractor
XPath Extractor
XPath2 Extractor

Многозначные переменные - это те, которые извлекаются, когда вы устанавливаете -1 для Match Numbers.Это приводит к созданию переменной с номером совпадения с именем varName_matchNr и для каждого значения к созданию переменной varName_n, где n = 1, 2, 3 и т. Д.

Поэтому, как только вы используете предикат, вы получите счет в yourVariableName_matchNr .Пример: -

enter image description here

enter image description here

Надеюсь, что эта помощь.

...