Jmeter: Почему мои утверждения JSON терпят неудачу из-за вопросительного знака?

#json #regex #jmeter #assertion

#json #регулярное выражение #jmeter #утверждение

Вопрос:

Я тестирую чат-бота меню / ресторана, и мне нужно подтвердить, что он получил точные входные данные, которые я ввел. Я запрашиваю отладчик, чтобы вернуть входные данные.

Моя входная строка What is cocktail? . Это ответ:

     "userInputs": {
    "originalInput": {
      "sentence": "What is cocktail?",
      "timestamp": 2088408809
      }
     },
  

Таким образом, он определенно получает правильный ввод. Похоже, ошибка в моем утверждении JSON. Вот оно, получение данных из CSV-файла (где input = Что такое cocktail?).

введите описание изображения здесь

Затем мое утверждение завершается ошибкой с сообщением Input : Value expected to match regexp '(?i)What is cocktail?', but it did not match: 'What is cocktail?'

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

Комментарии:

1. Хорошо, я обнаружил, что вам нужно избежать вопросительного знака. Но как мне это сделать, когда оно включено во входную строку? Это единственный способ добавить «?» к каждому вопросительному знаку в моем наборе данных?

Ответ №1:

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

? знак вопроса — это квантификатор с нулевым или единичным соответствием.

Вы можете заменить значение, используя препроцессор JSR223

 vars.put("inputEscaped", vars.get("input").replace("?","\?"));
  

Это создаст новую переменную, которую ${inputEscaped} вы можете использовать (также вы можете переопределить input )