jmeter java sampler测试java接口(二)测试自己的代码
2016-03-27 22:36
537 查看
前面一节是解析javatest代码,这一节进行简单的方法测试
测试代码 : 传入一个Str值,放到集合里面遍历集合在日志中打印出来。
说明:
1 执行时间:在 results.sampleStart()和 results.sampleEnd();之间的时间为聚合报告里面测试用例的执行时间,results.sampleStart()之前的操作不记录到测试用例里面的时间,所以与测试接口无关的一些操作都应该放到results.sampleStart()之前或者 results.sampleEnd()之后OR放到setupTest()和teardownTest()里面
2 方法介绍:
context.getParameter():从Arguments获取值
getDefaultParameters() :从jmeter的图形窗口获取用户设置的值供context使用
3 SampleResult返回测试结果:体现在返回code,message,请求报文和相应报文。对应在查看结果数里面的一些数据
导出jar包到/lib/ext下面
结果展示,
一:日志,代码中的log.info
二:查看结果树
results.setResponseCode(“200”);
results.setResponseMessage(“成功测试”);
results.setSampleLabel(“样式1”);
三:请求
results.setSamplerData(“请求参数”+str1);
四:响应
results.setResponseData(“响应结果”, null);
至此javasampler进行java方法测试已经弄完了。如果要测试java接口只需要在runTest()里面调用接口就可以了。前面虽然有使用beanshell进行java方法测试的介绍,不过建议测试java接口还是采用这种方法。beanshell作为辅导。
jmeter有了java sampler就可以为所欲为了,几乎可以测试任何请求。前面测试ftp请求也可以用java sampler,包括测试数据库操作等等
测试代码 : 传入一个Str值,放到集合里面遍历集合在日志中打印出来。
说明:
1 执行时间:在 results.sampleStart()和 results.sampleEnd();之间的时间为聚合报告里面测试用例的执行时间,results.sampleStart()之前的操作不记录到测试用例里面的时间,所以与测试接口无关的一些操作都应该放到results.sampleStart()之前或者 results.sampleEnd()之后OR放到setupTest()和teardownTest()里面
2 方法介绍:
context.getParameter():从Arguments获取值
getDefaultParameters() :从jmeter的图形窗口获取用户设置的值供context使用
3 SampleResult返回测试结果:体现在返回code,message,请求报文和相应报文。对应在查看结果数里面的一些数据
import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; 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; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class TestOne extends AbstractJavaSamplerClient implements Serializable { private static final Logger LOG = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; //定义常量getDefaultParameters()使用 private static final String Str1 = "Str1_Value"; //自定义的参数 private String str1; /** * Default constructor for <code>JavaTest</code>. * * The Java Sampler uses the default constructor to instantiate an instance * of the client class. */ public TestOne() { LOG.debug(whoAmI() + "\tConstruct"); } @Override public void setupTest(JavaSamplerContext context) { if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\tsetupTest()"); } } @Override public Arguments getDefaultParameters() { Arguments params = new Arguments(); //通过jmter的图形框进行传参,无默认值 params.addArgument(Str1,""); return params; } @Override public SampleResult runTest(JavaSamplerContext context) { //通过传参给变量赋值 str1 = context.getParameter(Str1); LOG.info(str1+""); SampleResult results = new SampleResult(); //返回请求值,体现在jmeter查看结果数请求里面 results.setSamplerData("请求参数"+str1); // Record sample start time. results.sampleStart(); try { // Execute the sample. In this case sleep for the // specified time, if any //测试代码 List<String> arrList=new ArrayList<String>(); arrList.add(str1); arrList.add("c"); arrList.add("d"); Iterator<String> iter=arrList.iterator(); while(iter.hasNext()) { // System.out.print(iter.next()+" "); LOG.info(iter.next()+""); } results.setSuccessful(true);//这里决定测试用例成功还是失败 //返回结果 results.setResponseData("响应结果", null); } catch (Exception e) { LOG.warn("JavaTest: interrupted."); results.setSuccessful(true); } finally { // Record end time and populate the results. results.sampleEnd(); //设置返回信息 results.setResponseCode("200"); results.setResponseMessage("成功测试"); results.setSampleLabel("样式1"); } if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime()); } return results; } private String whoAmI() { StringBuilder sb = new StringBuilder(); sb.append(Thread.currentThread().toString()); sb.append("@"); sb.append(Integer.toHexString(hashCode())); return sb.toString(); } }
导出jar包到/lib/ext下面
结果展示,
一:日志,代码中的log.info
二:查看结果树
results.setResponseCode(“200”);
results.setResponseMessage(“成功测试”);
results.setSampleLabel(“样式1”);
三:请求
results.setSamplerData(“请求参数”+str1);
四:响应
results.setResponseData(“响应结果”, null);
至此javasampler进行java方法测试已经弄完了。如果要测试java接口只需要在runTest()里面调用接口就可以了。前面虽然有使用beanshell进行java方法测试的介绍,不过建议测试java接口还是采用这种方法。beanshell作为辅导。
jmeter有了java sampler就可以为所欲为了,几乎可以测试任何请求。前面测试ftp请求也可以用java sampler,包括测试数据库操作等等
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之使用Http协议实现文件上传功能
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序