博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jmeter 自定义测试请求(功能完善)
阅读量:6257 次
发布时间:2019-06-22

本文共 4991 字,大约阅读时间需要 16 分钟。

hot3.png

之间写过一篇 ,文章中只是简单描述了自定义java请求的过程,现在对SampleResult类进行补充,提取我们的请求response header信息和response信息,这样jmeter在进行压测时,就可以更好地管理我们的java请求了。其中使用了jmeter2.9中的 ApacheJMeter_core.jar、ApacheJmeter_java.jar和httpclient-4.2.3.jar。
 package com.yeetrack.jmeter;import java.io.IOException;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.HttpHost;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import org.apache.jmeter.config.Arguments;import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;import org.apache.jmeter.samplers.SampleResult;/** * @author youthflies * 易踪网 yeetrack.com */public class App extends AbstractJavaSamplerClient{    private SampleResult sampleResult();    DefaultHttpClient httpClient = new DefaultHttpClient();    @Override         public Arguments getDefaultParameters()         {                 // TODO Auto-generated method stub                 return super.getDefaultParameters();         }         @Override         public void setupTest(JavaSamplerContext context)         {         // TODO Auto-generated method stub                 super.setupTest(context);         }         public SampleResult runTest(JavaSamplerContext arg0)         {         // TODO Auto-generated method stub                 sampleResult = new SampleResult();                 sampleResult.setSampleLabel("jmeter自定义测试请求 by yeetrack.com");             HttpHost target = new HttpHost("www.baidu.com", 80, "http");                 HttpGet get = new HttpGet("http://www.baidu.com");                 //设置request header                 get.setHeader("Connection", "keep-alive");                 get.setHeader("Host", "www.baidu.com");                 get.setHeader("User-Agent", "Apache-HttpClient/4.2.3 (java 1.5)");              //处理request header                 Header[] requestHeaders = get.getAllHeaders();                 StringBuffer requestheaderBuffer = new StringBuffer();                 for(Header header : requestHeaders)                         requestheaderBuffer.append(header.getName()+":"+header.getValue()+"\n");                     sampleResult.setRequestHeaders(requestheaderBuffer.toString());                 try                     {             //开始计时                              sampleResult.sampleStart();                              //执行get方法                              HttpResponse response = httpClient.execute(target, get);                       //计时结束                              sampleResult.sampleEnd();                             //处理response header                              Header[] headers = response.getAllHeaders();                              StringBuffer  headerBuffer = new StringBuffer();                              headerBuffer.append(response.getStatusLine()+"\n");                             for(Header header : headers)                                       headerBuffer.append(header.getName()+":"+header.getValue()+"\n");                                   sampleResult.setResponseHeaders(headerBuffer.toString());             //处理response 文本                                 HttpEntity httpEntity = response.getEntity();                                  String responseString = EntityUtils.toString(httpEntity);                                System.out.println(responseString);                               sampleResult.setResponseData(responseString, "utf-8");                                sampleResult.setResponseCodeOK();                                if(response.getStatusLine().toString().contains("200"))                                                sampleResult.setResponseCode("200");                                          sampleResult.setResponseMessageOK();                                          sampleResult.setSuccessful(true);                                         if(true) //添加自己的校验条件,当然也可以在jmeter中添加,不在代码中添加                                                     sampleResult.setSuccessful(true);                                }                 catch (ClientProtocolException e)                         {             // TODO Auto-generated catch block                                    e.printStackTrace();                          } catch (IOException e)                         {             // TODO Auto-generated catch block                                      e.printStackTrace();                          }         return sampleResult;                      }                      @Override                      public void teardownTest(JavaSamplerContext context)                     {         // TODO Auto-generated method stub                                super.teardownTest(context);                          httpClient.getConnectionManager().shutdown();       } }

转载于:https://my.oschina.net/u/147181/blog/164936

你可能感兴趣的文章
SP2 PRIME1 - Prime Generator
查看>>
创建和编辑 crontab 文件
查看>>
钉钉发消息
查看>>
20172309_《程序设计与数据结构(下)》_课堂测试修改报告。
查看>>
(二十九)方法调用之解析
查看>>
Springboot文件上传与下载
查看>>
Activity与Fragment数据传递之Fragment从Activity获取数据 分类: ...
查看>>
记一次小的51CTO聚会
查看>>
架構設計_案例說明_by 高老師
查看>>
VR內容開發(PAGE-2)
查看>>
飞舞的蝴蝶
查看>>
Linux环境下C语言模拟内存负载测试
查看>>
专栏《轻松玩转ELK海量可视化日志分析系统》已完结【附代码下载】
查看>>
新手IT人员,如何找到适合自己专业书籍的6个问题?
查看>>
初学者学习linux运维的几个问题及老鸟建议
查看>>
Server 2008 R2 AD RMS完整部署:RMS部署篇
查看>>
SFB 项目经验-45-用培训课件当运维文档,聪明
查看>>
使用Kubernetes创建PHP留言板系统
查看>>
时间管理,从洗碗开始
查看>>
我用EDM卖约会秘籍的半个月
查看>>