Jmeter - передача массива ответов JSON на следующий http-запрос graphql - PullRequest
0 голосов
/ 16 марта 2020

У меня 2 httpq-запроса graphql, как указано ниже.

Первый ответ http-запроса, возвращающий json, например:

{"data": {"Customers": {"customerIds": ["0e1c7b05-79c6-40c6-9144-7230a836fe04 "," 45677b05-79tt-56c6-9144-7230a836bbbb "]}}}

Затем я создал экстрактор json и оболочку для сохранения идентификаторов клиентов в свойстве

enter image description here

enter image description here

2-й Http-запрос с использованием вышеупомянутого свойства customerids как части тела запроса graphql

enter image description here

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

POST data:
{"query":"query getCustomerInfo {\n  getCustomerInfo(customerIds: \"["0e1c7b05-79c6-40c6-9144-7230a836fe04"]\") {\n firstName\n lastName\n school\n }\n}"}

1 Ответ

1 голос
/ 16 марта 2020
  1. Не вставляйте функции или переменные JMeter в ваши скрипты

    При использовании этой функции убедитесь, что код вашего скрипта не использует переменные JMeter напрямую в коде скрипта в качестве кеширования будет только кешироваться первая замена. Вместо этого используйте параметры скрипта.

  2. Не используйте Beanshell, так как с JMeter 3.1 вы должны использовать тестовые элементы JSR223 и Groovy language для сценариев

Замените свое Beanshell Assertion на JSR223 PostProcessor и используйте следующий код:

props.put("customerIds",vars.get("customerIds").replaceAll("\"","\\\\\""));

Таким образом, вы получите следующее customerIds значение свойства:

[\"0e1c7b05-79c6-40c6-9144-7230a836fe04\",\"45677b05-79tt-56c6-9144-7230a836bbbb\"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...