#jmeter
#jметр #jmeter
Вопрос:
Я немного затрудняюсь создать надлежащий тест для этого сценария: в основном, я делаю POST-вызов веб-службы и пытаюсь утверждать следующее:
- Ответ 201 в порядке
- Ответ 409 также в порядке (но я извлекаю этот код в переменную и пытаюсь повторить попытку позже)
- Ответ 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; } «, иначе это утверждение не приведет к сбою запроса, если условия, которые мы не выполнили.