#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
)