JMeter 初体验/Java 网络请求脚本添加

Jmeter  简易使用(网上有很多图片,教程,此处 只是简单 描述一下):

Jmeter   软件使用,首先 创建一个  测试计划,在该 测试计划上右键  添加- ->Threads(Users) -->  线程组

然后在 线程组上 右键--> 添加-->Sampler-->Http 请求

Http 请求中配置 响应的信息,保存即可

然后需要创建响应的  结果树,创建步骤:(在 线程组上 右键,添加 -->监听器-->查看结果树

可根据个人需求,自行添加 监听器。

 

 

Jmeter JAVA 脚本 使用 01:

 使用 个人自定义的java脚本进行  测试。

  1. 首先需要在  Jmeter   lib/ext  包中拷贝

ApacheJMeter_core.jar

ApacheJMeter_java.jar

这两个包 java项目中。

2.创建测试类入口  implements  AbstractJavaSamplerClient ,重写其内部的 方法即可。

  1. 将该项目打成jar包,(若有 其他jar包的引用,需要  将这些jar 存放到 lib 文件夹下,否则 会出现 某些 class not found 异常)
  2. 此处需要注意的是,若 有网络请求发生的时候,在Jmeter 默认lib 中存在 commons-apache-httpclient 3.x 版本的 网络请求包,此处可以考虑替换掉该包 或者  使用该包 ,否则 请求网络时会出现异常。
  3. 导出 jar包后,可将  jar包放置到  lib/ext  包下。
  4.   Jmeter 创建 线程组后,创建一个 Java 请求 ,如果路径放置正确的话,会  出现 你设定的 测试类。创建好相应的 结果查看树之类 的监听器后,即可监听。

此处贴出 Java 请求 类以供参考:

 1 import java.io.ByteArrayOutputStream;
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.io.UnsupportedEncodingException;
 5 import java.net.URI;
 6 import java.net.URISyntaxException;
 7 import java.util.Arrays;
 8 import java.util.HashMap;
 9 import java.util.List;
10 
11 import org.apache.commons.httpclient.HttpClient;
12 import org.apache.commons.httpclient.HttpConstants;
13 import org.apache.commons.httpclient.HttpException;
14 import org.apache.commons.httpclient.NameValuePair;
15 import org.apache.commons.httpclient.methods.PostMethod;
16 import org.apache.jmeter.config.Argument;
17 import org.apache.jmeter.config.Arguments;
18 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
19 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
20 import org.apache.jmeter.samplers.SampleResult;
21 
22 import com.leo.utils.Constants;
23 import com.leo.utils.HttpBase;
24 
25 @SuppressWarnings({ "deprecation", "unused" })
26 public class TestLogin extends AbstractJavaSamplerClient {
27 
28     public SampleResult runTest(JavaSamplerContext arg0) {
29         SampleResult result = new SampleResult();
30         HashMap<String, Object> hashMap = new HashMap<>();
31         hashMap.put("size", "10");
32         result.sampleStart();
33         result.setRequestHeaders(hashMap.toString());
34         result.setDataEncoding("UTF-8");
35         HttpClient client = new HttpClient();
36         PostMethod postMethod = null;
37         postMethod = new HttpBase(true, false).createJson_hm(
38                 Constants.HOME_GOODS_URL, hashMap);
39         String body = null;
40         postMethod.addRequestHeader("Content-Type", "application/json");
41         for (int i = 0; i < postMethod.getParameters().length; i++) {
42             NameValuePair pair = postMethod.getParameters()[i];
43             result.setRequestHeaders(pair.getName() + "::" + pair.getValue());
44         }
45         try {
46             int statusCode = client.executeMethod(postMethod);
47             if (statusCode == 200) {
48                 InputStream in = postMethod.getResponseBodyAsStream();
49                 body = ToString(in);
50                 result.setSuccessful(true);
51                 result.setResponseData(body);
52             } else {
53                 result.setSuccessful(false);
54                 result.sampleEnd();
55             }
56         } catch (HttpException e) {
57             e.printStackTrace();
58         } catch (IOException e) {
59             e.printStackTrace();
60         }
61         result.setResponseMessage(body);
62         result.setSuccessful(true);
63         result.sampleEnd();
64         return result;
65     }
66 
67     private String ToString(InputStream in) throws IOException {
68         // TODO Auto-generated method stub
69         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
70         byte[] data = new byte[128];
71         int count = -1;
72         while ((count = in.read(data, 0, 128)) != -1)
73             outStream.write(data, 0, count);
74 
75         data = null;
76         return new String(outStream.toByteArray());
77     }
78 
79     @Override
80     public void setupTest(JavaSamplerContext context) {
81         super.setupTest(context);
82         Arguments arguments= getDefaultParameters();
83         
84         
85     }
86 
87     @Override
88     public void teardownTest(JavaSamplerContext context) {
89         // TODO Auto-generated method stub
90         super.teardownTest(context);
91 
92     }
93 }

 

其中 的SampleResult  可用来打印显示 信息: 譬如:

所以 需要  对 SampleResult 中 的 信息进行设定。

posted @ 2016-04-28 13:30  CrazyMax  阅读(383)  评论(0编辑  收藏  举报