Jmeter前置处理器和后置处理器的使用

一、JMETER基本概念 

  1、 测试计划:顶级菜单,代表一个测试计划;

  2、 线程组:代表一个要测试的场景(各种相关的交易集合),对于性能测试来说可以指定多少个用户完成这个场景的内容,对于自动化测试来说,指定一个用户即可;

  3、 控制器:挂在线程组下,用来控制各种交易(接口)的调用频率,有循环控制器、简单控制器等等

  4、 取样器:代表一次发起请求和接收响应的元件,这里可以认为是一个接口、交易、请求

  5、 前置处理器:取样器发起请求前可以用这做一些工作,比如参数化等等

  6、 后置处理器:取样器收到响应后做一些工作,比如提取响应报文中的内容

二、前置处理器跟后置处理器的区别

        前置处理器是用于发送请求之前,用于准备工作,比如参数化获取当前日期、获取随机字母数字名称、获取当前日期下月日期。

       【BeanShell PreProcessor、用户参数】

        后置处理器是用于发送请求之后,取样器收到响应后做一些工作,比如提取响应报文中的内容,获取Cookie、token 。

      【BeanShell PreProcessor、正则表达式提取器、JSON Extractor、Debug PostProcessor】 

三、前置处理器使用

        3.1 BeanShell PreProcessor

        例如: 通过beanshell 脚本获取当前日期、当前日期减1天、 当前日期加30天

  

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class GetTime {

    /**
     * 获取当前日期
     * 
     * @return
     */
    public String getcurrentDate() {
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String currentDate = formatter.format(currentTime);
        return currentDate;
    }

    /**
     * 获取当前日期的下一个月
     * 
     * @param day
     * @return
     */
    public String getDateAddMonth() {
        String year_month_day = "yyyy-MM-dd";
        SimpleDateFormat dgt = new SimpleDateFormat(year_month_day);
        Calendar date = Calendar.getInstance();
        date.add(Calendar.MONTH, Integer.parseInt("1"));
        String endDate = dgt.format(date.getTime());
        return endDate;
    }

    /**
     * 获取当前日期减一天
     * 
     * @return
     */
    public String getDateBeforeDay() {
        Calendar c = Calendar.getInstance();
        Date date = null;
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String a = formatter.format(currentTime);
        try {
            date = new SimpleDateFormat("yy-MM-dd").parse(a);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day - 1);
        String dayBefroe = new SimpleDateFormat("yyyy-MM-dd").format(c
                .getTime());

        return dayBefroe;
    }

}

   

四、后置处理器使用

         4.1 BeanShell PreProcessor

         

        

posted @ 2019-05-23 21:39  vame  Views(9609)  Comments(3Edit  收藏  举报