實際過程中采用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
