JMeter - ссылка на определяемую пользователем переменную в теле POST Http - PullRequest
1 голос
/ 18 января 2012

Может кто-нибудь сказать мне, как получить доступ к пользовательской переменной внутри вложенного файла сэмплера HTTP?

Что я сделал:
создал сэмплер HTTP Requset (метод POST);
создал переменную myvar, которая представляет собой случайную переменную JMeter.

Проблема:
Когда я ссылаюсь ${myvar} для заполнения заголовка Http, он работает, но когда я использую его внутри файла, который я отправляю как тело POST, он не заменяется, а отправляется как ${myvar}.

Заранее спасибо!

1 Ответ

2 голосов
/ 26 января 2012

1. По ссылке 18.1.2 HTTP-запрос

Обработка параметров:
Для методов POST и PUT, если файл для отправки отсутствует, а имена параметров не указаны, затем тело создается путем объединения всех значений параметры. Это позволяет отправлять произвольные тела. Значения кодируется, если установлен флаг кодирования (версии JMeter после 2.3).

Поэтому, если вы хотите решить свою проблему только с помощью стандартной функции HTTP Sampler, вам не нужно использовать файл для вашего запроса POST и установить $ {myvar} в качестве параметра запроса без имени, как указано выше.


Поскольку этот подход кажется не очень применимым в вашем случае, вы можете попробовать следующее:

2. Перепишите свой файл, чтобы установить $ {myvar} в фактическое значение перед использованием в запросе HTTP.

Вы можете сделать это с помощью BSF PreProcessor / BeanShell PreProcessor - оба подключены непосредственно к «целевому» HTTP-запросу - или BSF Sampler / BeanShell Sampler - они должны быть размещены перед «целевым» HTTP-запросом.

Код для перезаписи сэмплера может быть следующим (бобовая оболочка):

// parsing params passed to script
String [] params = Parameters.split(",");

// setting values from params
String postFile = params[0];
String myVarValue = params[1];

StringBuilder data = new StringBuilder();
BufferedReader in = new BufferedReader(new FileReader(project.getProperty("basedir") +          
    System.getProperty("file.separator") + postFile));

char[] buf = new char[1024];
int numRead = 0;
while ((numRead = in.read(buf)) != -1) {
    data.append(buf, 0, numRead);
}
in.close();

// re-writting ${myvar} with actual value
String temp = data.toString().replaceAll("\\$\\{myvar\\}", myVarValue);

Writer out = new BufferedWriter(new FileWriter(project.getProperty("basedir") + 
    System.getProperty("file.separator") + postFile));
out.write(temp);
out.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...