Ошибка JMeter, подтверждающая строковый json: «Ожидается, что значение будет {\"host\": \"testHost221\"}, но найдено {"host": "testHost221"}"
Я использую Jmeter для проверки двух вещей.
Большие строки (несколько символов в качестве значения, например «valueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee») в json-запросе строкового json для одного пользователя.
Небольшая строка (просто обычное значение, например «значение») в json-запросе строкового json для ста пользователей.
*** Сначала я использую http-запрос PUT для обновления базы данных данными json:
{ "data": "{"servers":[{"host":"testHost221","port":1234,"useSSL":false,"useTLS":false,"password":"testPassword1","username" :"коко"}]}" }
*** Затем я использую GET для проверки результатов из базы данных.
*** И это ошибка, которую я получаю в утверждении JSON для обоих тестов (конечно, когда я использую большую строку для значения, значения не похожи на username=koko, но KokoooooooooooooooooooooooooooooooooooooooooooooooooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOтся
Ожидается, что значение будет '"{"servers": [{"host": "testHost221", "port": 1234, "useSSL": false, "useTLS": false, "password": "testPassword1", "username" : "коко"}]}"',
но найден '{"servers": [{"host": "testHost221", "port": 1234, "useSSL": false, "useTLS": false, "password": "testPassword1", "username": "" }]}'
ПРИМЕЧАНИЕ. Кажется, что stackoverflow также удаляет экранирование, поэтому я загружаю изображение неудачного утверждения:
Это происходит в обоих тестах "большая строка - 1 пользователь" и "маленькая строка - 100 пользователей". Однако это происходит где-то около 49-го выполнения (когда я использую 100 пользователей с короткими строками), но происходит всегда, когда я использую большое строковое значение (со многими символами, показанными выше).
Так почему же в какой-то момент побег удаляется? Может кто-нибудь мне помочь? ПРИМЕЧАНИЕ. Я должен использовать этот (строчный) json!
Я пытался использовать http-сырой запрос из менеджера плагинов, но он продолжает возвращать 400, думаю, ему не нравится json. Я спросил ИИ, он предположил, что Jmeter может неправильно воспринять экранирование как регулярное выражение и в какой-то момент запутаться... Результаты одинаковы, как пройденные, так и неудавшиеся тесты... всегда где-то около 49-го выполнения теста (когда я использовать 100 пользователей) и всегда, когда я использую 1 пользователя с большими значениями ключей json. У Postman нет этой проблемы (я тестировал случай с длинными строковыми значениями, не знаю, как протестировать почтальон со 100 пользователями и возможно ли это вообще...)
1 ответ
Я считаю, что есть лучший способ справиться с ситуацией, однако ваш вопрос не содержит достаточной детализации, поэтому я не могу найти наиболее элегантное решение.
В качестве обходного пути вы можете использовать функцию __groovy() для вызова StringEscapeUtils.unescapeJson().
${__groovy(org.apache.commons.text.StringEscapeUtils.unescapeJson(vars.get('your-variable-name-here')),)}
Дополнительная информация о сценариях Groovy в JMeter: Apache Groovy: для чего используется Groovy?