Jmeter: Почему мои утверждения JSON не выполняются из-за вопросительного знака? - PullRequest
1 голос
/ 14 марта 2019

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

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

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

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

enter image description here

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

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

1 Ответ

0 голосов
/ 14 марта 2019

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

?знак вопроса - это квантификатор совпадение ноль или единица.

Вы можете заменить значение с помощью Препроцессор JSR223

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

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

...