Утверждение сложного ответа в jmeter

#jmeter

#jметр #jmeter

Вопрос:

Я немного затрудняюсь создать надлежащий тест для этого сценария: в основном, я делаю POST-вызов веб-службы и пытаюсь утверждать следующее:

  1. Ответ 201 в порядке
  2. Ответ 409 также в порядке (но я извлекаю этот код в переменную и пытаюсь повторить попытку позже)
  3. Ответ 400 может быть приемлемым, но только если в теле ответа есть определенная строка

Пункты 1 и 2 выше у меня получилось нормально работать: позже я обработаю 2 с помощью экстрактора кода ответа и контроллера If.

Моя проблема в следующем: как мне проверить наличие заданной подстроки в теле ответа, но только в случае кода ответа 400?

Окончательное утверждение, которое я хочу построить, звучит примерно так:

«(если код ответа равен 201 или 409) или (если код ответа равен 400 и «подстрока» найдена в теле) тогда OK»

Ответ №1:

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

Соответствующий код Beanshell будет выглядеть следующим образом:

 if (ResponseCode.equals("201") || ResponseCode.equals("409") || (ResponseCode.equals("400") amp;amp; SampleResult.getResponseDataAsString().contains("something"))) {
    Failure = false;
}
  

Более подробную информацию о получении уверенности с помощью утверждений JMeter смотрите в руководстве «Как использовать утверждения JMeter в 3 простых шага».

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

1. Милая, я не знал об утверждениях Beanshell, и это действительно позволило мне точно указать, как проверить этот запрос. Для полноты картины мне пришлось добавить часть «else { Failure = true; } «, иначе это утверждение не приведет к сбою запроса, если условия, которые мы не выполнили.