Как рассчитать возраст на основе значений дня / месяца / года, указанных в предыдущем запросе?- Jmeter - PullRequest
0 голосов
/ 08 июня 2018

Значения для дня / месяца / года будут переданы в запросе № 1, как bday=${__Random(1,30, bda)}, bmonth=${__Random(1,12, bmont)} & byear=${__Random(1950,2000, byea)}. Я храню случайные значения в третьем параметре и использую его для дальнейших запросов.Теперь мне нужно вычислить возраст в запросе № 2 и передать значение для параметра «Возраст».Формат DOB будет D/MM/YY и DD/MM/YY только тогда, когда значение даты больше 9. Может кто-нибудь предложить по этому поводу?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете рассчитать разницу между двумя датами, используя, например, функцию __ groovy () , пример синтаксиса будет выглядеть примерно так:

${__groovy((groovy.time.TimeCategory.minus(new Date()\, Date.parse('dd-MM-yyyy'\,String.format('%02d'\, vars.get('bda') as int) + '-' + String.format('%02d'\, vars.get('bmont') as int) + '-' + vars.get('byea'))).days / 365).setScale(0\, java.math.RoundingMode.DOWN),)}

Демонстрация:

JMeter Date Delta with Groovy

Дополнительная информация: Apache Groovy - зачем и как его использовать

0 голосов
/ 08 июня 2018

Когда вы храните День Месяц Год в bda, bmont, byea ... вы можете использовать эти переменные в оболочке bean для вычисления возраста

  1. Сначала добавьте постобработчик бобов к вашему запросу № 1, где вы генерируете случайную DOB.
  2. в постпроцессоре добавьте следующий код

    String year = vars.get ("byea");

    String Month = vars.get ("bmont");

    String Day = vars.get ("bda");

    String birthDate = year + "-" + Month + "- "+ День;

    vars.put (" дата рождения ", дата рождения);

enter image description here

Добавьте бобовый препроцессор к запросу 2, в котором вы хотите передать возраст, и добавьте следующий код

import java.text.SimpleDateFormat;
String birthDate =vars.get ("birthDate");

SimpleDateFormat sdf = new SimpleDateFormat ("гггг-мм-дд");

Date dateOfBirth = sdf.parse (birthDate);

Calendar dob = Calendar.getInstance ();

dob.setTime (dateOfBirth);

Calendar today = Calendar.getInstance ();

int age = today.get (Calendar.YEAR) - dob.get (Calendar.YEAR);

if (today.get (Calendar.MONTH)

age-;

} иначе if (today.get (Calendar.MONTH) == dob.get (Calendar.MONTH)

&& today.get (Calendar.DAY_OF_MONTH)

age -;

} vars.put ("age", String.valueOf (age));

как показано ниже enter image description here

используйте ${age} и передайте pass в запросе http ..

Для получения дополнительной информации о Beanshell, пожалуйста, перейдите по этой ссылке ...

Пожалуйста, дайте мне знать, если это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...