1.jmeter测试脚本,有两种方式。

实现JavaSamplerClient接口

继承AbstractJavaSamplerClient抽象类

本次使用实现JavaSamplerClient接口方式

2.如图,需要重写四个方法

@Override

public void setupTest(JavaSamplerContext javaSamplerContext) {

}

@Override

public SampleResult runTest(JavaSamplerContext javaSamplerContext) {

return null;

}

@Override

public void teardownTest(JavaSamplerContext javaSamplerContext) {

}

@Override

public Arguments getDefaultParameters() {

return null;

}

setupTest 启动时,需要做的处理

getDefaultParameters 传参

runTest方法体

teardownTest结束时,需要做的处理

3.因为需要在jmeter中进行参数化,所以需要getDefaultParameters 方法进行传参

// 这个方法是用来自定义java方法入参的。

// params.addArgument("applyAmount", "966100000000");表示入参名字叫applyAmount,默认值为966100000000。

//设置可用参数及它的默认值;

public Arguments getDefaultParameters() {

Arguments params = new Arguments();

params.addArgument("applyAmount", "966100000000");

return params;

}

左侧是代码中参数获取,右侧是jmeter页面输入参数

4.runTest中进行业务的代码实现或者调用实现方法即可

//开始测试,从javaSamplerContext参数可以获得参数值;

public SampleResult runTest(JavaSamplerContext javaSamplerContext) {

String applyAmount = javaSamplerContext.getParameter("applyAmount");

String url = "http://172.28.38.81:40505/czCredit/v1/repaychargeplan/repayTrial";

System.out.println("[Test Case] url = " + url);

// 必填

String productCode="A3"; //产品编码 信贷核心表product_term.loan_product_code

String applyDate="2018-08-13"; //申请日期

//选填

String buyInsurance="1"; //是否购买保险 1是 0否

String channelCode="O20170809100414"; //渠道编码

Map paraMap = new HashMap();

paraMap.put("productCode",productCode);

paraMap.put("applyDate",applyDate);

paraMap.put("applyAmount",applyAmount);

paraMap.put("buyInsurance",buyInsurance);

paraMap.put("channelCode",channelCode);

System.out.println("[request Data]请求参数 paraMap = " + JSONObject.toJSONString(paraMap));

Map headers = new HashMap();

headers.put("appId", "100");

headers.put("t",t);

headers.put("X-Real-IP","127.0.0.1");

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url);

// 构造 Header

Iterator i$ = headers.keySet().iterator();

while (i$.hasNext()) {

String header = String.valueOf(i$.next());

httpPost.setHeader(header, String.valueOf(headers.get(header)));

}

// 构造 Body

Iterator t$ = paraMap.keySet().iterator();

while (t$.hasNext()) {

String body = String.valueOf(t$.next());

httpPost.setHeader(body, String.valueOf(paraMap.get(body)));

}

String signBodyData = HttpUtils.getSignMap(t, paraMap);

StringEntity requestEntity = new StringEntity(signBodyData, Consts.UTF_8);

httpPost.setEntity(requestEntity);

CloseableHttpResponse httpResponse = null;

String responseString = null;

String responseMessage = null;

String status = null;

String info = null;

String result = null;

SampleResult sampleResult = new SampleResult();

try {

httpResponse = httpClient.execute(httpPost);

HttpEntity responseEntity = httpResponse.getEntity();

if (responseEntity != null && SC_OK == httpResponse.getStatusLine().getStatusCode()) {

responseString = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));

System.out.println("[Test Case] responseString = " + responseString);

responseMessage = String.valueOf(JSONPath.eval(JSON.parseObject(responseString),"$message"));

System.out.println("[Test Case] responseMessage = " + responseMessage);

info = String.valueOf(JSONPath.eval(JSON.parseObject(responseString),"$info"));

System.out.println("[Test Case] responseMessage = " + info);

status = String.valueOf(JSONPath.eval(JSON.parseObject(responseString),"$status"));

System.out.println("[Test Case] status = " + status);

result = String.valueOf(JSONPath.eval(JSON.parseObject(responseString),"$result"));

System.out.println("[Test Case] result = " + result);

}

EntityUtils.consume(requestEntity);

EntityUtils.consume(responseEntity);

httpResponse.close();

httpClient.close();

sampleResult.setSampleLabel(getClass().getName()); //设置标签

sampleResult.sampleStart();

sampleResult.setResponseCode(String.valueOf(httpResponse.getStatusLine().getStatusCode())); //设置响应码

sampleResult.setResponseMessage(responseMessage); //设置响应信息

sampleResult.setResponseData(responseString,"utf-8");//设置响应数据

sampleResult.setSamplerData(paraMap.toString());//设置请求参数

sampleResult.setDataType(SampleResult.TEXT);//设置数据类型

if("0000".equals(status) && "success".equals(info) && null != result){

sampleResult.setSuccessful(true);//设置结果成功

}else{

sampleResult.setSuccessful(false);//设置结果成功

}

}catch (Exception e){

sampleResult.setSuccessful(false);

sampleResult.setResponseMessage(e.toString());

e.printStackTrace();

}finally {

sampleResult.sampleEnd();

System.out.println("[Test Case] 接口 " + getClass().getName() + " 测试完毕.");

}

return sampleResult;

}

5.代码写好后,将代码进行打包操作,输出jar包,具体操作如下:

1)右键点击工程,选择open Module Settings,进入页面

2)选择Artifacts->JAR->From modules with dependencies

3)弹出对话框

,点击OK,页面显示jar包的输出路径。点击OK,配置完成

4)在idea菜单栏,点击Build->BuildArtifacts

->

5)到指定路径 即可获取jar包

6)jmeter添加java请求

给jmeter指定jar包路径:进入jmeter/bin下,找到jmeter.properties文件,修改search_paths参数,参数值为jar包所在路径,可以配置多个,用;隔开,如图

创建线程组->创建Java请求->在jira请求中选择类名称,如图,添加参数->生成脚本

7)linux上执行脚本

a.linux上安装jmeter

将windows上的zip包直接放到linux上

进入bin目录,chmod 777 jmeter

修改环境变量:

# vim /etc/profile

export PATH=/opt/apache-jmeter-3.3/bin/:$JAVA_HOME/bin:$PHP_HOME/bin:$PATH

# source /etc/profile 使改动生效

b.在linux的jmeter中导入jar包,执行命令:

脚本执行命令:jmeter -n -t /opt/jmx/push5000.jmx -l log.jtl

-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter

-t 测试文件 -> 要运行的 JMeter 测试脚本文件

-l 日志文件 -> 记录结果的文件

注意:

jmeter需要jdk1.8以上版本,否则执行脚本命令时,会报错:

Error: Java version is too low to run JMeter. Needs at least Java >= 1.8.0.

解决办法:

升级即可

jmeter java_Jmeter 使用-JAVA请求相关推荐

  1. jmeter java性能_使用JMeter进行性能测试(Java请求)

    来源:http://wangym.iteye.com/blog/731729 看了两篇如何使用JMeter在HTTP请求及数据库方面做性能测试的文章(如下两个链接),感受到这款工具的强大及易用.我在这 ...

  2. jmeter java性能_jmeter之自定义java请求性能测试

    写在前面 最近个人情绪不稳定.心情很不美丽,特别懒,没有博客和技术文章更新,这个文章也是迟到了一周多的时间,啰嗦完了,开始正题吧. 我们在实际做性能测试的时候,一般会采用jmeter.Lr进行测试,但 ...

  3. jmeter教程(六):java请求

    我们发送http请求或是其它请求,就是在执行一段代码,只不过,执行的代码,布署在服务器上.而java请求,也是在执行一段代码,只不过代码布署在本地,需要我们自己实现代码的逻辑.利用java请求,可以很 ...

  4. JMeter之Java请求

    一.JMeter中Java请求是什么? Java请求属于JMeter里的取样器,简单使用跟Beanshell差不多,都能够实现运行一定的Java代码逻辑,但Java请求功能更强大. 为什么要用Java ...

  5. jmeter的java请求(socket接口)

    socket简介:网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个十分流 ...

  6. jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例

    JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,大家可以到官网下载源代码和查看相关文档. 关于使用JMeter进行JDBC数据库测试.HTTP请求接 ...

  7. jmeter重写java请求_jmeter之编写java请求-扩展Java Sampler

     分类: JMeter实践(19) 版权声明:本文为博主原创文章,未经博主允许不得转载. 新浪围脖>79642549 有以下优势 脚本易维护 易调试 开发脚本周期短 不过网上扩展java请求文章 ...

  8. jmeter里看java的log,jmeter中java协议请求

    5.Export为Runnable Jar File:hello.jar 注意:不需要将整个工程导出,只需要选中包名(test)在file菜单中点击export->选java项的jar file ...

  9. Jmeter自定义Java请求

    一.需求背景 在日常压测过程中,有些请求逻辑比较复杂的时候,Jmeter 中自带的sample取样器不够灵活,或者性能就会比较低了,这个时候就可以自己写java代码实现自己的请求. 二.准备工作 1. ...

  10. jmeter java接口,jmeter并发测试java接口 | 学步园

    Sample 这里我用到主要JMeter的线程和报表,扩展了他的"Java请求"这个应用类别.要扩展此应用,要用到lib/ext/ApacheJMeter_java.jar,他封装 ...

最新文章

  1. Jquery UI dialog 详解 (中文)
  2. zookeeper实现分布式锁的原理及具体使用案例
  3. Report not added to business roles
  4. 最常被程序员们谎称读过的计算机书籍
  5. ADO.NET 命名规范
  6. 【C++ STL学习之七】STL算法之find和find_if
  7. 生成可重集的排列(方法)
  8. 为什么很多人已经很努力了
  9. Python入门--列表生成式
  10. 洛谷P4593 [TJOI2018]教科书般的亵渎 【数学】
  11. Java基础练习题及详细答案
  12. Echarts地图的基本使用方法
  13. Beaglebone移植DDS模块驱动(AD9833)
  14. html5查询通配符,通配符有哪些?
  15. 给仍在「 选品 」的跨境卖家提个醒!
  16. 几个问题帮你认识“NIC”----网卡
  17. 青岛理工大学转专业到计算机难不难,2021年青岛理工大学大一新生转专业及入学考试相关规定...
  18. mysql database alias_mysql小结——基础篇
  19. 按键精灵手机版 代码收藏
  20. 华为服务器文件升级失败,升级连接服务器失败

热门文章

  1. DHCP Snooping,Dynamic ARP Inspection实现
  2. LSET与LREM结合删除list中特定索引的值
  3. php操作字符串(移除字符,计算字符串中字符个数,分割字符串,字符串序列化...
  4. WordPress搬家更换域名教程
  5. 2017-01-20_dp测试
  6. SnapKit 是怎样炼成的 | 掘金技术征文
  7. Haskell分解质因数
  8. 第九周项目6-穷举法之换分币
  9. aarch64 arm上交叉编译mysql-2.7.35
  10. mysql怎么判断多行数据日期是否连续_MySQL学习笔记(一)