jmeter 使用java 请求


实际过程中采用Jmeter压测Http接口比较多,但当有些请求逻辑比较复杂的时候,Jmeter 中自带的sample比较难实现,或者是实际工作中也可能会遇见一些无法通过http 来实现的,比如通过SDK来获取token,然后拿token再去请求其他的接口等等,就需要借助java request来实现逻辑。

Jmeter自带的java request defaults(包含 java test 和 Sleep test 2个)

 

 

 

下面来看下创建自己需要的Java Request 的步骤:

1. 创建Java 工程

2. 引入JMeter在lib目录和lib\ext 目录下的jar包:

  ApacheJMeter_core.jar

  ApacheJMeter_java.jar

  avalon-framework-4.1.4.jar

  jorphan.jar

  logkit-2.0.jar

     -------------------------------------------------------------------

  import org.apache.jmeter.config.Arguments; //请求参数

  import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; //请求基类

  import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; //请求上下文,可以理解为Jmeter传过来的内容

  import org.apache.jmeter.samplers.SampleResult;//请求结果

3. 创建一个类并实现javaSamplerClient 接口或继承AbstractJavaSamplerClient,并重写:

  public Arguments getDefaultParameters():设置可用参数及默认值;

  public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;

  public SampleResult runTest(JavaSamplerContest arg0):开始测试,从arg0参数可以获得参数值;

  public void teardownTest(JavaSamplerContest arg0):测试结束时调用;

  ( 调用顺序: getDefaultParameters——> setupTest——> runTest ——> teardownTest )

4. 导出jar包到 {JMETER_HOME}\lib\ext目录中。

5. 重启JMeter界面

6. 新增java请求,选择需要的类名称,填写参数。

7. 设置线程组、结果树、进行测试。

 

举例:新建一个随机生成中文姓名的Java请求

1. 创建类 TestDemo, 继承自AbstractJavaSamplerClient

  public class TestDemo extends AbstractJavaSamplerClient;

2. getDefaultParameters: 默认参数设置,将显示在JMeter界面。

  public Arguments getDefaultParameters(){

    Argument args = new Arguments();

    args.addArgument(name:"name_count", value:"2"); //设置参数name_count,并赋予默认值2

    args.addArgument(name:"name_count", value:"3"); 

    args.addArgument(name:"all_random", value:"true");

    args.addArgument(name:"last_name", value:"张");

    return args;

  }

3. setupTest:初始化的操作,比如将参数复制给变量。

  public void setupTest(JavaSamplerContest JavaSamplerContest){

    this.labeName = JavaSamplerContest.getParameter( "TestElement");

    this.nameCount = JavaSamplerContest.getIntParament("name_count");

    this.nameLength = JavaSamplerContest.getIntParameter("name_length");

    this.allRandom = Boolean.valueOf(JavaSamplerContest,getOaraneter("all_random");

    this.lastName = javaSamplerContext.getParameter("last_name");

  }

4. runTest: 逻辑主体 

(sampleStart和sampleEnd作为统计事务的开始和结束。 setSuccessful 可以设置事务的成功失败。)

  public SampleResult runTest(JavaSamplerContext javaSamplerContext) {

    SampleResult results = new SampleResult();

     try{

      results.sampleStart(); //统计时间开始标志

      List<String> names = CreateName.GetName(nameCount, nameLength, allRandom, lastName);

      //正常

      results.setResponseDate(names.toString(),"UTF-8");

      results.setDataType(SampleResult.TEXT);

      results.setSuccessful(true);

    } catch (Throwable e) {

      //有异常

      results.setSuccessful(false);

      results.setResponseMessae(e.toString());

    } finally {

      results.sampleEnd();// jmeter 统计时间结束标记

    }

    return resules;

  }  

5. teardownTest:结束时的操作

   public void teardownTest(JavaSamplerContext JavaSamplerContext) {

  }

6. 导出jar包:TestDemo.jar, 放入 {JMETER_HOME}\lib\ext目录中.

7. 重启Jmeter, 新创建 java request,名称处可选择到TestDemo


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM