在开发测试时,通常需要在测试中编写代码。此代码可能很长,可能会在多个测试中重复,或者可能仅针对特定测试编写。此外,如果要求发生变化,则在测试中编写的代码可能必须更改或补充。

这可能需要很长时间并且容易出错。假设我们有20个Apache JMeter™测试,其中编写了相同的代码,并且在某个时间点我们决定对所有20个测试的代码进行更改。必须在每个JMeter测试中进行更改。为了摆脱这种日常工作,我们可以从JAR文件中调用代码进行测试(JAR文件是Java Archive)。

将在开发环境(例如,IntelliJ IDEA)中编写将在描述测试方法的测试中使用的代码,创建一个JAR文件,并且仅执行所需代码和测试请求的调用。测试本身。我们不需要在测试中直接编写代码,如果由于某种原因我们需要更改代码,我们只在一个地方更改它。

前一篇文章“在JMeter中使用Groovy发送HTTP和HTTPS请求”  展示了如何使用Groovy创建发送HTTP / HTTPS请求的方法。基于这些方法,本文将展示如何在测试中创建JAR文件并在JAR文件中使用此类方法。

要创建此类JAR文件,您必须执行以下操作:

先决条件

1.下载并安装GroovyIntelliJ IDEA

2.下载以下JAR文件:

需要JAR文件来创建发送HTTP / HTTPS请求的方法。

设置Intellij IDEA

3.运行IntelliJ IDEA并创建项目,如下所示。

创建新项目 - > Groovy - >下一步 - >设置项目名称 - >设置项目位置 - >完成

  • 项目名称 - 任意名称。我给了这个名字“Jmeter”。
  • 项目位置 - 项目所在的目录

4.单击“完成”按钮后,创建的项目将如下图所示。

5.将下载的JAR文件添加到项目中

文件 - >项目结构

模块 - >依赖项 - >“+” - > JAR或目录

6.从打开的列表中,选择先前下载的JAR文件,然后单击“确定”。

7.再次单击“确定”。

8.创建一个Groovy类

src - >右键单击 - >新建 - > Groovy类 - 设置名称 - >设置种类 - >单击“确定”

9.将要重用的代码添加到创建的类中。在这种情况下:

static List<String> sendRequest(String url, String method, Map<String,Object> body) {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(2000)
.setSocketTimeout(3000)
.build(); StringEntity entity = new StringEntity(new Gson().toJson(body), "UTF-8"); HttpUriRequest request = RequestBuilder.create(method)
.setConfig(requestConfig)
.setUri(url)
.setHeader(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8")
.setEntity(entity)
.build(); String req = "REQUEST:" + "\n" + request.getRequestLine() + "\n" + "Headers: " +
request.getAllHeaders() + "\n" + EntityUtils.toString(entity) + "\n"; HttpClientBuilder.create().build().withCloseable { httpClient -> httpClient.execute(request).withCloseable { response -> String res = "RESPONSE:" + "\n" + response.getStatusLine() + "\n" + "Headers: " +
response.getAllHeaders() + "\n" +
(response.getEntity() != null ? EntityUtils.toString(response.getEntity()) : "") + "\n"; System.out.println(req + "\n" + res); return Arrays.asList(req, res);
}
}
}

“在JMeter中使用Groovy发送HTTP和HTTPS请求”中给出了此代码的说明。唯一的区别是“静态”访问修饰符。其描述将在本文后面给出。添加自己的代码时,请务必添加它。

10.创建另一个JAR文件。此文件将添加到JMeter。

文件 - >项目结构

工件 - >单击“+” - > JAR - >从具有依赖关系的模块 - >确定

11.选择并删除除Jmeter.jar之外的所有文件,如下图所示。此名称根据项目名称生成。

12.双击每个文件,从“可用元素”部分添加文件,如下图所示。IntelliJ将显示文件。这些是本文开头的JAR文件。

13.添加后,将显示文件,如下图所示。单击“确定”。

14. 构建 - >构建工件...... - >构建

单击“Build”后,将在目录... \ Jmeter \ out \ artifacts \ Jmeter_jar中创建一个JAR文件,如下图所示。

设置JMeter

15.将JAR文件添加到JMeter

将创建的JAR文件复制到JMeter目录... \ apache-jmeter-4.0 \ lib

创建JAR文件并将其添加到JMeter后,可以在JMeter本身中调用List <String> sendRequest(String url,String方法,Map <String,Object> body)方法。这将调用JAR文件中的代码。

为此,您需要在JMeter中执行以下操作:

16.添加一个线程组

右键单击 - >添加 - >线程(用户) - >线程组

17.添加JSR223采样器

线程组 - >右键单击 - >添加 - >采样器 - > JSR223采样器

JSR223采样器 - >语言Groovy

18.在JSR223 Sampler中,添加以下代码示例。

Map<String,Object> map = new LinkedHashMap<>();
map.put("Param_1", "Value_1");
map.put("Param_2", Arrays.asList(1,2,3,4));
map.put("Param_3", Arrays.asList("a","b","c")); List test1 = Requests.sendRequest("https://hooks.zapier.com/hooks/catch/3320164/az95by","POST", map);
log.info(Arrays.toString(test1));
 

根据您的方案更新测试参数。在这种情况下,“https://hooks.zapier.com/hooks/catch/3320164/az95by","POST”,地图。

在调用sendRequest()方法时,我们不需要导入Requests类(例如,import Requests;)来访问该类,并且不需要创建类对象(例如,Requests requests = new Requests() )访问该方法。

我们只需要指定类的名称(在我们的例子中是Requests),并通过具有相应参数值的点指定方法的名称。这种形式的方法调用变得可用,因为我们在IntelliJ IDEA中创建了一个静态方法。静态方法是一种方法,在此方法之前,访问修饰符是“静态的”

19.运行执行代码后,我们在JMeter控制台中获得以下结果:

上图显示了正在发送的请求和收到的响应。

cmd还将显示已发送的请求和收到的响应,如下图所示。

而已!现在,每次更新测试时都不需要更改整个代码。如果确实更改了测试方法,请确保在JMeter中更新正确的JAR文件。

如何使用JAR文件重用JMeter代码并节省时间的更多相关文章

  1. windows 自动移动maven jar包到jmeter 文件夹下面

    jmeter 自动移动maven jar包到jmeter 文件夹下面 bat 文件 rem 本文件放在jmeter 脚本maven项目根目录下面,和pom.xml在同一个文件夹下面 rem 预置条件, ...

  2. 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件

    1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以 ...

  3. 命令行方式使用abator.jar生成ibatis相关代码和sql语句xml文件

    最近接手一个老项目,使用的是数据库是sql server 2008,框架是springmvc + spring + ibatis,老项目是使用abator插件生成的相关代码,现在需要增加新功能,要添加 ...

  4. 分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件

    原文:分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件 import java.util.zip.*; import java.io.*; public class Zip ...

  5. 将Java代码打包成jar文件转换为.exe可执行程序方法

    ​ 做完学生管理系统后我想将代码打包成一个可执行程序,那样就可以直接点击在Windows下运行了,下面就跟大家分享下打包方法. 将Java的代码转换成 .exe 文件需要先把代码打包成 jar 文件然 ...

  6. Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件

    引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行 ...

  7. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...

  8. maven 生成可执行的jar文件

    微服务的热潮,慢慢讲jar引入了码农的视线之中,从传统web开发中过来的人面对这个东西也算是个新鲜事了,接下来聊一聊在maven下生成可运行jar的那些事. Maven可以使用mvn package指 ...

  9. 如何在eclipse将程序导出成jar文件

    如何在eclipse将程序导出成jar文件 听语音 | 浏览:916 | 更新:2015-08-22 17:57 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅为你的电脑系统,选个靠谱师傅 ...

随机推荐

  1. NET LOCALGROUP命令详解(将用户添加到管理员组等)

    NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN] groupname {/ADD [/COMMENT:"tex ...

  2. Java_HTTP_01_HttpClient

    一. 二.参考文档 1. HttpClient官方文档 HttpClient官方文档中文翻译 1.HttpClient 4 实现文件下载 2.httpclient 上传文件.下载文件 3.httpcl ...

  3. oracle中导出sql的几个常见词语的意思

    set feedback off不显示反馈信息  “1行已插入”,大量数据装入时,显示这个也是很浪费资源和时间的. set define off 如果你某个字段里面有&字符,插入数据会出错,设 ...

  4. HihoCoder1656 : 前缀后缀查询([Offer收割]编程练习赛39)(字典树+小技巧)

    描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si.他希望 ...

  5. 蓝桥杯训练 2n皇后问题

    给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一条对角线上 ...

  6. 创建maven多模块项目

    一:创建父项目

  7. C#中多线程中变量研究

    今天在知乎上看到一个问题[为什么在同一进程中创建不同线程,但线程各自的变量无法在线程间互相访问?].在多线程中,每个线程都是独立运行的,不同的线程有可能是同一段代码,但不会是同一作用域,所以不会共享. ...

  8. poj2392磊石头——排序后背包

    题目: 首先按限制高度从小到大排序,不会影响可行解,而不排序可能卡掉正确的情况: 用%2滚动数组时一定注意每次复制上一种情况,因为这个WA了好几次. 代码如下: #include<iostrea ...

  9. poj2182Lost Cows——树状数组快速查找

    题目:http://poj.org/problem?id=2182 从后往前确定,自己位置之前没有被确定的且比自己编号小的个数+1即为自己的编号: 利用树状数组快速查找,可另外开一个b数组,角标为编号 ...

  10. Advanced R之函数

    转载请注明出处,谢谢. 再次声明下,本人水平有些,错误之处敬请指正. 函数 函数是R基本的块结构单元:为了掌握本书中的更高级技术,你需要对函数有扎实的了解.也许你已经写过一些函数,并了解函数的基本知识 ...