jmeter之 java请求

在我所接触的jmeter脚本编写中,接触到的的最多的取样器就是http取样器,但是如果用来测试rpc等就不合适了,看网上的资料发现了java请求的魅力,就总结下java请求的编写吧

1.导入包到工程,将jmeter\lib下的所有jar包,尤其是ext中的ApacheJMeter_core.jar,ApacheJMeter_java.jar都是必须的,这是保险起见

 2.编写class文件

package wuchun;


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;

 //这四个包就在我们刚才导入的jmeter jar包中

public class Test extends AbstractJavaSamplerClient {

private static long start = 0;

private static long end = 0;

private String id = "0";

@Override

public Arguments getDefaultParameters() {

//可选,定义可用参数及默认值

Arguments args = new Arguments();

args.addArgument("id", "123456789"); // 添加默认参数及对应值 //参数名称:id 参数值:123456789

return args;

}


@Override

public SampleResult runTest(JavaSamplerContext context) {
// 必选,定义线程运行的请求
String id = context.getParameter("id");

SampleResult sr = new SampleResult(); // 为避免多线程问题,设置sr为局部变量

sr.setSampleLabel("request1"); // 设置采样标签,对应GUI 聚合报告里的Label值

try {

//Start

sr.sampleStart(); // 开始统计响应时间,取样器开始运行

// TODO

System.out.println(id);


sr.setSamplerData("id="+id);//设置请求的数据,在查看结果树中可以看到

sr.setResponseData("id="+id, "utf-8"); //设置响应的数据第一个参数 设置JMeter GUI "查看结果树" 请求对应的"响应数据" // 执行压测前 建议注释掉,第二个参数 为编码, 设置JMeter GUI "取样器结果" DataEncoding: utf-8 // 第二个参数为 "", 则表示默认为 GBK编码

sr.setDataType(SampleResult.TEXT); // 设置JMeter GUI "取样器结果" Data type ("text"|"bin"|""):text

sr.setResponseMessageOK(); // 设置JMeter GUI "取样器结果" Response message: OK

sr.setResponseCodeOK(); // 设置JMeter GUI "取样器结果" Response code: 200

} catch (Exception e) {

sr.setSuccessful(false);//设置请求失败

sr.setResponseMessage("server error"); // 设置JMeter GUI "取样器结果" Response message: server error

sr.setResponseCode("500"); // 设置JMeter GUI "取样器结果" Response code: 500

e.printStackTrace();

} finally {

// End

sr.sampleEnd();//设置取样器结束运行

}

return sr;

}


@Override

public void setupTest(JavaSamplerContext context) {

// 开始时间
System.out.println("setup....");
start = System.currentTimeMillis();

}

@Override

public void teardownTest( JavaSamplerContext context){

// 结束时间
System.out.println("teardown....");
end = System.currentTimeMillis();

// 总体耗时

System.err.println("cost time:" + (end - start) / 1000);

}

}其中重要的就是这几个方法

public Arguments getDefaultParameters();可选,定义可用参数及默认值;  
          public void setupTest(JavaSamplerContext arg0):可选,测试前执行,做一些初始化工作;  
          public SampleResult runTest(JavaSamplerContext arg0);必选,实现自定义请求;  
          public void teardownTest(JavaSamplerContext arg0):可选,测试结束时调用;

 3.将上述打jar包,并放入lib\ext中

4.重启jmeter,添加java请求,设置如下

 

5.运行,结果如下

 

 

 

总结:java请求更为灵活,可以自定义请求的内容,其中重要的就是四个方法,请求和返回可以自定义,参数也可以结合jmeter进行参数化

猜你喜欢

转载自www.cnblogs.com/diwangguilai/p/12050787.html
今日推荐