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;}; // 必選,實現自定義請求

  代碼中的方法執行的先后順序:

  getDefaultParameters () --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
 
  2、SampleResult中常用屬性
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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM