В JMeter, как мне проверить значение, возвращенное в json, на соответствие значению, вычисленному из двух переменных jmeter?

#jmeter

#jmeter

Вопрос:

Я извлекаю $.matching_results из этого json:

 {
  "matching_results": 5,
  "enrichments": {
    "keywords": [
      {
        "text": "shore of Mobile Bay",
        "relevance": 0.809978
      }
    ],
    "concepts": [
      {
        "text": "Mobile, Alabama",
        "relevance": 0.972324
      },
      {
        "text": "Birmingham, Alabama",
        "relevance": 0.954301
      }
    ]
  },
  "session_token": "1_e7R7s9QIt28pN8p3_TzjR8acCX"
}
  

и я хочу сравнить его с произведением двух переменных
${__BeanShell(${__evalVar(numAssetThreads)}*${__evalVar(numAssetLoops)})}

Я попробовал приведенное выше выражение и это выражение ${__BeanShell(String.valueOf(${__evalVar(numAssetThreads)}*${__evalVar(numAssetLoops)}))}

и я пробовал это с Match as a regular expression указанием и без него.

Я также пытался ${__BeanShell(${__V(numAssetThreads)}*${__V(numAssetLoops)})}

Во всех случаях я получаю сообщение об ошибке, подобное этому:

 Assertion failure: true
Assertion failure message: Value expected to match regexp '5 ', but it did not match: '5'
  

или

 Assertion error: false
Assertion failure: true
Assertion failure message: Value expected to be '2 ', but found '2'
  

Как я могу заставить это работать?

Ответ №1:

 Value expected to match regexp '5 ', but it did not match: '5'

there is a space after 5  here --^
  

Каким-то образом удалите это пространство, и ваше утверждение должно начать работать.

Имейте в виду, что начиная с JMeter 3.1 вам следует рассмотреть возможность перехода на функцию __groovy() как:

  1. Groovy совместим с современными функциями Java, в то время как Beanshell застрял на синтаксисе Java 5
  2. Groovy предоставляет «синтаксический сахар» поверх Java SDK
  3. Производительность Groovy намного лучше по сравнению с Beanshell.