• 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 

  • 相关阅读:
    MVC中使用Ajax提交数据 Jquery Ajax方法传值到action
    Jquery获取select,dropdownlist,checkbox下拉列表框的值
    mvc Attribute NotMapped DisplayName Required 等介绍
    asp.net mvc Controller控制器返回类型
    蓝桥杯必备算法模板
    解决vant-weapp组件库的example的导入问题
    JAVA学习之路(多线程)---模拟售票(细解)
    【位运算,异或】“只出现一次的数字” 的一类问题解决方法
    【蓝桥杯2016第七届比赛题目】JAVA A组
    【API】151. 翻转字符串里的单词
  • 原文地址:https://www.cnblogs.com/mengyu/p/13307226.html
Copyright © 2020-2023  润新知