Jmeter Java Request (十一)
实际过程中采用Jmeter压测Http接口比较多,但是实际工作中也可能会遇见一些无法通过http 来实现的,之前工作中遇见通过SDK来获取token,然后拿token再去请求其他的接口,需要借助java request来实现逻辑,下面来看下如何来实现java Request请求;
一、实现JAVA请求代码(Java Request 核心内容)
1、创建Maven工程;
2、pom文件添加依赖 ApacheJMeter_core 和 pacheJMeter_java;
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>5.1.1</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>5.1.1</version> </dependency>
3、继承AbstractJavaSamplerClient,并重写runTest()方法;
4、JAVA Request 请求例子(例子中主要模拟判断账号和密码是否一致做出不同接口,账号和密码与预期一致登录成功,设置结果为通过,账号和密码与预期不一致登录失败,设置结果为失败);
package com.cfilmcloud.example; 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; /** * @Author liuqiang_cl@163.com * @Date 2020/7/14 16:56 */ public class JmeterJavaRequestExample extends AbstractJavaSamplerClient { public void setupTest(JavaSamplerContext context) { //可选,测试前执行,做一些初始化工作; System.out.println("setupTest"); } public void teardownTest(JavaSamplerContext context) { // 可选,测试结束时调用; System.out.println("teardownTest"); } @Override public Arguments getDefaultParameters() { // 设置可用参数 Arguments jMeterProperties = new Arguments(); jMeterProperties.addArgument("userName", ""); jMeterProperties.addArgument("userPassword", ""); return jMeterProperties; } @Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { //必选,实现自定义请求,请求逻辑; SampleResult sampleResult = new SampleResult(); sampleResult.setSampleLabel("Jmeter Java Request"); // 设置请求名称 try { sampleResult.sampleStart(); //开始统计响应时间标记 String userName = javaSamplerContext.getParameter("userName"); String userPassword = javaSamplerContext.getParameter("userPassword"); if (userName.equals("admin") && userPassword.equals("admin")) { System.out.println("登录成功"); sampleResult.setSuccessful(true); // 设置结果成功 sampleResult.setResponseData("登录成功", "utf-8"); } else { System.out.println("登录失败"); sampleResult.setSuccessful(false); // 设置结果失败 } } finally { sampleResult.sampleEnd();// 结束统计响应时间标记 } return sampleResult; } }
5、通过打包生成jar包
6、将jar包放在jmeter lib/ext目录下,重新启动Jmeter
二、Jmeter 配置 Java Request请求
1、新建Java Request请求
2、选择要执行请求的类和配置请求参数
到此Java Request请求配置完成,后续请求执行阶段与Http请求执行一致,而Jmeter request 请求的核心步骤不在于Jmeter的配置,关键在于Java 代码的实现内容,主要逻辑存放在Java代码,而Jmeter主要是来执行该代码
三、JMeter Java Sampler介绍
1、常用方法
public void setupTest(JavaSamplerContext context){}; // 测试启动时调用,主要做一些初始化工作; public void teardownTest(JavaSamplerContext context){}; // 测试结束时调用,主要做一些资源回收工作; public Arguments getDefaultParameters(){return null;}; //设置可用参数及参数默认值,主要用于Jmeter界面与代码参数之间的交互操作; public SampleResult runTest(JavaSamplerContext javaSamplerContext) {return null;}; // 必选,实现自定义请求
代码中的方法执行的先后顺序:
sampleResult.setSampleLabel("Jmeter Java Request"); // 设置请求名称 sampleResult.sampleStart(); //开始统计响应时间标记 sampleResult.setSuccessful(true); // 设置请求结果成功 sampleResult.setSuccessful(false); // 设置请求结果失败 sampleResult.sampleEnd();// 结束统计响应时间标记 sampleResult.setResponseData("登录成功", "utf-8"); // 设置Response,如果返回内容包含中文,需要指定字符串,否则会出现乱码
文中代码提取链接: https://pan.baidu.com/s/182pOzVR4S2Q0jEhjnN5wjA 提取码: imgc