当前位置:   article > 正文

Jmeter实现自定义Java请求_jmeter能定义其他语言的请求吗

jmeter能定义其他语言的请求吗

在使用日常工作中时候有时候会遇到Jmeter功能无法满足我们的需求,这个时候就可以开发自定义的扩展组件来实现我们的需求。

Jmeter扩展组件有两种实现方式:

  1. 继承AbstractJavaSamplerClient抽象类

  2. 实现JavaSamplerClient接口

实现JavaSamplerClient接口需要实现setupTest、getDefaultParameters、runTest、teardownTest四个方法,而继承AbstractJavaSamplerClient只需要实现runTest即可。从AbstractJavaSamplerClient源码中可以看到他本身已经帮我们实现了其他三个方法,如下:

AbstractJavaSamplerClient实现其他三个方法

下面将演示如何实现一个简单的get请求。

 

1.新建一个maven工程(后面要使用maven进行打包),在pom文件中添加三个依赖,如下:

  1. <dependencies>
  2.     <dependency>
  3.         <groupId>org.apache.jmeter</groupId>
  4.         <artifactId>ApacheJMeter_core</artifactId>
  5.         <version>5.0</version>
  6.     </dependency>
  7.     <dependency>
  8.         <groupId>org.apache.jmeter</groupId>
  9.         <artifactId>ApacheJMeter_java</artifactId>
  10.         <version>5.0</version>
  11.     </dependency>
  12.     <!--HttpClient依赖-->
  13.     <dependency>
  14.         <groupId>org.apache.httpcomponents</groupId>
  15.         <artifactId>httpclient</artifactId>
  16.         <version>4.5.3</version>
  17.     </dependency>
  18. </dependencies>

 

前两个是Jmeter的依赖包,版本号要和Jmeter版本一致。第三个是HttpClient包,这里使用它完成Http请求。

 

2.创建一个MyHttpGet类,实现JavaSamplerClient 类,如下。

  1. public class MyHttpGet implements JavaSamplerClient {
  2.     public void setupTest(JavaSamplerContext javaSamplerContext) {
  3.     }
  4.     public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
  5.         return null;
  6.     }
  7.     public void teardownTest(JavaSamplerContext javaSamplerContext) {
  8.     }
  9.     public Arguments getDefaultParameters() {
  10.         return null;
  11.     }
  12. }

 

定义两个String类型参数URLNAME和DEFAULTURL用来保存Jmeter中显示的参数名称和默认参数值。

  1.  private static final String URLNAME = "URL";  //定义一个参数名称
  2.  private static final String DEFAULTURL = "http://www.baidu.com";  //定义一个默认参数

 

在getDefaultParameters方法中将参数名和参数值显示到Jmeter中

  1.     public Arguments getDefaultParameters() {
  2.         Arguments arguments = new Arguments();
  3.         arguments.addArgument(URLNAME,DEFAULTURL);   //将参数名称和默认参数添加到Jmeter参数中
  4.         return arguments;
  5.     }

 

在setupTest方法中获取Jmeter界面输入的参数

  1.     private String inputUrl; //定义一个inputUrl用来接收输入的url
  2.     public void setupTest(JavaSamplerContext javaSamplerContext) {
  3.         inputUrl = javaSamplerContext.getParameter(URLNAME,DEFAULTURL);
  4.         System.out.println("inputURL is:"+inputUrl); //将输入的url打印出来
  5.     }

在runTest方法中写测试逻辑

  1. private String resultData; //定义一个字符串,用来存放响应结果
  2. public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
  3.         SampleResult result = new SampleResult(); //创建要返回的结果对象
  4.         result.setSamplerData("测试地址:"+inputUrl); //设置请求体中显示的内容
  5.         HttpGet get = new HttpGet(inputUrl);  //创建一个get请求
  6.         CloseableHttpClient httpClient = HttpClients.createDefault(); //创建一个httpClient对象
  7.         result.sampleStart();//标记事务开始,用来统计执行时间等信息
  8.        //发起请求,返回一个HttpResponse对象
  9.         try {
  10.             HttpResponse response = httpClient.execute(get);
  11.             //获取请求结果响应码
  12.             int statusCode = response.getStatusLine().getStatusCode();
  13.             result.setResponseCode(String.valueOf(statusCode));  //设置响应状态码
  14.             //获取响应码判断请求是否成功
  15.             if (statusCode == 200){
  16.                 result.setSuccessful(true); //如果响应码是200,责判断请求成功
  17.             }
  18.             resultData = EntityUtils.toString(response.getEntity(),"UTF-8");//将响应结果保存到
  19.         } catch (IOException e) {
  20.             resultData = String.valueOf(e);  //如果请求异常,将异常结果返回
  21.             e.printStackTrace();  //详细的异常会打印在启动窗口中
  22.         }
  23.         result.sampleEnd();  //标记事务结束
  24.         result.setResponseData(resultData,"UTF-8");  //将请求结果放进result中
  25.         result.setDataType(SampleResult.TEXT);    //设置响应结果类型
  26.         result.setSampleLabel("自定义get请求"); //改变查看结果树中显示的名称
  27.         return result;
  28.     }

完成之后使用mvn clean package命令将项目打成jar包,打包完成后项目下会多出一个target目录,如图

然后将该目录下的jar包放到Jmeter的/lib/ext/目录下。

重新启动Jmeter,添加线程组->Java请求就可以看到我们自己写的java请求了。

 

再添加一个查看结果树,执行之后,如图:

图中标注了显示了SampleResult类的几个方法的作用(点击可查看大图)

 

我们再修改一下URL地址,请求一下http://www.qq.com,如下:

 

响应结果

 

 

那么,再来看一下请求失败的情况,修改请求地址为http://www.qweqweqweq.com如下:

 

响应结果,提示未知主机异常,因为根本就没有这个网址。

详细的错误信息可以在控制台查看

 

阿里云超低折扣活动再度来袭:

新用户购买 >

老用户续费>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/717394
推荐阅读
相关标签
  

闽ICP备14008679号