JMeter java请求

idea+maven+jmeter对接口压测

一、核心步骤

1.Maven创建一个Java工程,添加依赖

2.创建类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写方法

3.生成jar,放在JMeter lib/ext目录下

4.打开JMeter,创建线程组,添加Sampler Java请求,选择类
————————————————

1、在pom.xml中添加JMeter包

    <dependencies>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>3.1</version>
        </dependency>

    </dependencies>

 

2、继承AbstractJavaSamplerClient类,重写的方法

public class First extends AbstractJavaSamplerClient {

    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        System.out.println("hello jmeter!");
        return null;
    }
}

  

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

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

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

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

 

执行顺序:getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
————————————————
2、引用JavaSamplerClient类

  1 package com.demo;
  2 
  3 
  4 import org.apache.jmeter.config.Arguments;
  5 import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
  6 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
  7 import org.apache.jmeter.samplers.SampleResult;
  8 
  9 
 10 import java.io.IOException;
 11 import java.io.InputStream;
 12 import java.net.MalformedURLException;
 13 import java.net.URL;
 14 import java.net.URLConnection;
 15 
 16 
 17 public class Second implements JavaSamplerClient {
 18 
 19     //URLNAME就是在图形化界面当中显示的变量名称
 20     private static final String URLNAME ="URL";
 21 
 22     //设置界面当中默认显示的变量的值
 23     private static final String DEFALTURL="http://www.baidu.com";
 24 
 25     //用来存储响应的数据,目的是讲响应结果放到查看的结果数中
 26     private String resultData;
 27 
 28     //用户输入的url地址信息
 29     private String inputURL;
 30 
 31 
 32     /**
 33      * 这个方法决定了在jmeter当中要显示那些属性,加载到jmeter的时候会执行一次
 34      * @return
 35      */
 36     public Arguments getDefaultParameters() {
 37         Arguments arguments = new Arguments();
 38         arguments.addArgument(URLNAME,DEFALTURL);
 39 
 40         System.out.println("getDefaultParameters");
 41         return arguments;
 42     }
 43 
 44 
 45     /**
 46      * 这个方法就是一个初始化方法,我们所有的初始化的动作都可以在这里写
 47      * @param javaSamplerContext
 48      */
 49     public void setupTest(JavaSamplerContext javaSamplerContext) {
 50         inputURL =javaSamplerContext.getParameter(URLNAME,DEFALTURL);
 51         System.out.println("setupTest run");
 52         System.out.println("用户输入的URL地址是:" + inputURL);
 53 
 54 
 55     }
 56     /**
 57      * 这个方法就是实现你具体功能逻辑的方法
 58      * @param javaSamplerContext
 59      * @return
 60      */
 61     public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
 62         SampleResult result = new SampleResult();
 63         System.out.println("runTest run");
 64         StringBuffer sb = new StringBuffer();
 65         try {
 66             URL url = new URL(inputURL);
 67             URLConnection conn = url.openConnection();
 68             byte[] buffer = new byte[1024];
 69             int len;
 70 
 71             result.sampleStart(); //标记事务的开始
 72             InputStream in = conn.getInputStream();
 73             while ((len=in.read(buffer))!=-1){
 74                 resultData = new String(buffer,"UTF-8");
 75                 sb.append(resultData);
 76 
 77             }
 78 
 79         } catch (MalformedURLException e) {
 80             e.printStackTrace();
 81         } catch (IOException e) {
 82             e.printStackTrace();
 83         }
 84 
 85 
 86 //        resultData ="这就是响应的结果";
 87         resultData = sb.toString();
 88         result.setSampleLabel("自定义java请求访问抬头");
 89         result.setSuccessful(true); //告诉查看结果是访问是否成功
 90         result.setResponseData(resultData);
 91         result.setDataType(SampleResult.TEXT);
 92         return result;
 93     }
 94     /**
 95      * 这个方法就是来做一些收尾的工作的
 96      * @param javaSamplerContext
 97      */
 98     public void teardownTest(JavaSamplerContext javaSamplerContext) {
 99         System.out.println("teardownTest run");
100 
101     }
102 }
View Code

然后在Terminal中,输入命令mvn clean package 就在此项目的target下,打包生成了demo-1.0-SNAPSHOT.jar的jar包,

 

 

 

然后,把此jar包,放到jmeter的安装目录下的D:\apache-jmeter-3.1\lib\ext下,最后,打开jmeter,创建线程组-->java请求,类名称的选择是此second类的路径,比如com.demo.second

 

 

 

 

 

执行结果:

 

 

 

然后进行执行就OK了。

posted @ 2019-11-06 11:11  qiao1234  阅读(175)  评论(0)    收藏  举报