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 

posted on 2020-07-15 19:11  梦雨情殇  阅读(1500)  评论(1编辑  收藏  举报

导航