如何根据先前请求中提供的日/月/年值计算年龄? - Jmeter

时间:2018-06-08 09:38:50

标签: jmeter

日/月/年的值将在请求号1中传递,如bday=${__Random(1,30, bda)}, bmonth=${__Random(1,12, bmont)} & byear=${__Random(1950,2000, byea)}.我将随机值存储在第3个参数中,并将其用于进一步的请求。现在,我需要在请求no.2中计算Age,并传递'Age'参数的值。只有当日期值超过9时,DOB格式才会是D/MM/YYDD/MM/YY。任何人都可以建议吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

当您在bda,bmont,byea中存储Day Month Year时,您可以在bean shell中使用这些变量来计算年龄

  1. 首先在您的请求中添加beanshell post processor,然后生成随机DOB。
  2. 后处理器中的
  3. 添加以下代码

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

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

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

    String birthDate = year +" - " + Month +" - " + Day;

    vars.put("生日",出生日期);

  4. enter image description here

    1. 在您要传递年龄的请求2中添加beanshell preprocessor并添加以下代码

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

      SimpleDateFormat sdf = new SimpleDateFormat(" yyyy-mm-dd");

      日期dateOfBirth = sdf.parse(birthDate);

      日历dob = Calendar.getInstance();

      dob.setTime(DATEOFBIRTH);

      今天的日历= Calendar.getInstance();

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

      if(today.get(Calendar.MONTH)< dob.get(Calendar.MONTH)){

      年龄 - ;

      } else if(today.get(Calendar.MONTH)== dob.get(Calendar.MONTH)

      &安培;&安培; today.get(Calendar.DAY_OF_MONTH)< dob.get(Calendar.DAY_OF_MONTH)){

      年龄 - ;

      } vars.put("年龄",将String.valueOf(年龄));

    2. 如下图所示 enter image description here

      使用${age}并传递http请求传递..

      有关Beanshell的更多信息,请follow this link...

      请告诉我它是否有帮助..

答案 1 :(得分:0)

您可以使用__groovy() function计算2个日期之间的差异,示例语法如下:

${__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 - Why and How You Should Use It