当前位置: 首页 > news >正文

jmeter的java请求参数设置_jmeter之 java请求

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

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

9913377b8969c8a1f9054d3df0a17ab7.png

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请求,设置如下

e33202d24f89425b5b0de2a2b14bb528.png

6ca3b1b820bf8d55f0d135630795bd2f.png

5.运行,结果如下

c80c7792c874975cc2bd69fb39680654.png

14bf7016dd716cd48d24155b893625f0.png

32b009e4cbe079313420ba3ef3c05007.png

3a0650ffdb480bb2ddd73608d8168142.png

98c20b676e48fcc8b5a701ed9d3fce8b.png

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

相关文章:

  • java如何设置系统属性_java – 设置系统属性
  • java ajax增删改查_使用AJAX实现数据的增删改查
  • java去掉结尾的空格_如何从Java中显示的字符串末尾删除空格?
  • java最大回文字符串长度_Leet Code 5 最长回文子串 - Java
  • java泡沫_Java初认识--函数和数组
  • java虚拟机内存溢出的三个原因_JVM发生内存溢出的原因分析及解决方案
  • mysql更新多个字段php_PHP:如果语句无意中导致多个MySQL列更新?
  • properties java jar_propertiesutil jar包
  • python段落注释的语法格式是_Python 基础语法
  • python读取xml配置_python解析xml配置文件
  • java 接口数据类型_Java中的基本数据类型与引用数据类型
  • java 红包接口开发_java调用微信现金红包接口的心得与体会总结
  • java项目中学到了什么_我们能从Java的HelloWorld中学到什么?
  • js java md5加密_MD5加密 (java、js)
  • junit mysql_使用Junit单元测试及操作MySQL数据库时出现错误及解决方法
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angular4 模板式表单用法以及验证
  • Apache的80端口被占用以及访问时报错403
  • create-react-app做的留言板
  • Druid 在有赞的实践
  • ES6之路之模块详解
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • idea + plantuml 画流程图
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript DOM 10 - 滚动
  • Mysql优化
  • PhantomJS 安装
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue2.x学习三:事件处理生命周期钩子
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端学习笔记之观察者模式
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 微信支付JSAPI,实测!终极方案
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​比特币大跌的 2 个原因
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (3)nginx 配置(nginx.conf)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (java)关于Thread的挂起和恢复
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (十八)SpringBoot之发送QQ邮件
  • (五)IO流之ByteArrayInput/OutputStream
  • **python多态
  • .Net FrameWork总结
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET的数据绑定
  • @RestControllerAdvice异常统一处理类失效原因
  • @在php中起什么作用?
  • [Android] Android ActivityManager
  • [Android]使用Retrofit进行网络请求
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [C]编译和预处理详解