Сценарий ruby-jmeter - с использованием экстракта regex: опция и значение переменной
Я использую гем ruby-jmeter для написания DSL-скриптов для автоматизации тестирования производительности.
Я нахожу это довольно полезным для навигации по моим URL-адресам API, публикации данных, подтверждения ожидаемого результата и создания отчетов о тенденциях производительности.
Я застреваю при использовании синтаксиса extract regex: '', name: '' в ruby-jmeter.
Я хочу что-то вроде: я посещаю http :// domain/api/user?q=create,
Я отправляю необработанные данные JSON в качестве входных данных и получаю требуемый ответ JSON. Я хочу извлечь шаблон из этого ответа и использовать это значение динамически, чтобы я мог предоставить его в качестве входных данных для моего необработанного ввода JSON для посещения http: //domain/api/user?q=read
В основном я пытался:
visit name: 'CreateUser', url: "<url link>",<br>
method: "post",<br>
domain: "<domain>",<br>
path: 'api/user?q=create', <br>
raw_body: <input json> do<br>
#extract a pattern from response<br>
extract regex: '"Username":"(.+?)"', name: 'userName'<br>
puts '${userName}'<br>
# rest of code here.. <br>
# I want to use ${username} as input to my next Visit call<br>
end
Может ли кто-нибудь, кто изучал ruby-jmeter, помочь мне здесь, plssss?
спасибо, Виши.
1 ответ
Ruby-JMeter - это DSL, он оценивает код ruby только тогда, когда генерирует план тестирования (.jmx), он не запускает план тестирования и не оценивает код ruby одновременно.
В вашем примере это сгенерирует экстрактор регулярного выражения в JMeter:
extract regex: '"Username":"(.+?)"', name: 'userName'
Следующий код ruby не будет ничего знать о переменных JMeter в стиле ${}:
puts '${userName}'
Если регулярное выражение совпадает, то соответствующее ${userName}
Будет установлена переменная JMeter, и вы сможете использовать ее в последующих запросах:
visit name: 'users', url: '/api/user?q=${userName}'
Более подробные примеры тестирования API с помощью Ruby см. В этом блоге.