jmeter取样器javaRequest脚本8

news2024/9/23 11:27:04
  • 1,创建一个maven工程
  • 2,通过maven编译打包生成一个jar包
  • 3,重启jmeter,新建java request请求
  • 4,开始执行脚本
  • 本文永久更新地址:

1,创建一个maven工程

在pom.xml文件中添加

maven下载地址:https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java/5.4.1

 <dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java -->
    <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_java</artifactId>
        <version>5.4.1</version>
    </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>5.4.1</version>
        </dependency>

    </dependencies>

新建一个类继承jmeter的AbstractJavaSamplerClient父类,继承后重新父类中的方法

类名方法名说明
Arguments params = new Arguments();params.addArgument("Sleep_Time","100");添加到参数的key和value,这个参数添加后在java request的参数中显示
JMeterVariables jmeterVar = javaSamplerContext.getJMeterVariables();jmeterVar.get("username")获取jmeter全局变量中的值,比如获取界面上用户自定义变量配置元件中的变量值,csv导入数据的变量等,通过变量名获取
SampleResult sampleResult = new SampleResult();sampleResult.sampleStart();在请求开始之前记录一下开始时间,然后在请求结束后在记录结束时间sampleResult.sampleEndt();,就能统计出每次请求所需的时间
sampleResult.setSuccessful(true或者false);记录请求的结果为成功或失败为true则记录成功,为false则记录为失败
sampleResult.sampleEnd();在请求开始之前记录一下开始时间,然后在请求结束后在记录结束时间sampleResult.sampleEndt();,就能统计出每次请求所需的时间
sampleResult.setResponseData("".getBytes());获取每次请求返回的结果

获取java request取样器中的参数列表,不继承父类的话参数列表就是空的,定义后,添加对应的参数名和参数值,就会显示到参数列表

 //父类的方法,可以不继承
 public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("Sleep_Time","100");
        return params;
    }

image-20220119205525814

这两个方法是继承父类中的用例执行之前的方法和用例执行之后清理数据的方法

 @Override
    public void setupTest(JavaSamplerContext context) {
        System.out.println("用例开始数据生成");
    }

    @Override
    public void teardownTest(JavaSamplerContext context) {
        System.out.println("测试结束清理数据");
    }

继承父类中的runTest方法

    @Override
    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        //从jmeter全局变量中获取值,获取界面上用户自定义变量配置元件中的变量值,通过变量名获取
        JMeterVariables jmeterVar = javaSamplerContext.getJMeterVariables();
        String username = jmeterVar.get("username");
        String password = jmeterVar.get("password");
        String hostname = jmeterVar.get("hostname");
        String port = jmeterVar.get("port");

        SampleResult sampleResult = new SampleResult();
        sampleResult.sampleStart();
        JHttpRequestSample.apiTest(hostname,port,username,password);
        sampleResult.setResponseData("".getBytes());//获取每次请求返回的结果
        String code ="200";
       if (code == "200"){
            sampleResult.setSuccessful(true);
        }else {
           sampleResult.setSuccessful(false);
       }
        sampleResult.sampleEnd();
        return sampleResult;
    }
   public static void apiTest(String hostname, String port, String username, String password){
        //  接口
        String path1 = "/api/v1/user/login";
        String loginUrl ="http://" + hostname  + ":" + port + path1;
        String data = "{\n" +
                "\t\"authRequest\": {\n" +
                "\t    \"userName\": \"" + username + "\",\n" +
                "\t    \"password\": \"" + password + "\"\n" +
                "\t}\n" +
                "}";
        String respData1 = HttpClient.sendPost(loginUrl, data);
        System.out.println("返回的结过筛是:"+respData1);
    }

可以通过main方法调试一下脚本是否正常

    public static void main(String[] args) {
        //实验代码
        String hostname = "localhost";
        String port = "9091";
        String username = "user01";
        String password = "pwd";
        boolean result = JHttpRequestSample.menuRestfulAPITest(hostname, port, username, password);
        System.out.println("最终结果:" + result);
    }

image-20220119202954056

2,通过maven编译打包生成一个jar包

生成的jar复制到对应jmeter的lib/ext目录下

image-20220119215952115

3,重启jmeter,新建java request请求

新建java requst请求后,选择自定义的jar包,可以看出这里的两个参数数在getDefaultParameters方法添加进来的,这这里可以修改

image-20220119220939961

4,开始执行脚本

在执行前,先进行1个并发进行调试一下如果没有报错,在进行多并发测试

如果报错在jmeter启用的控制台查看报错日志

image-20220119222307307

image-20220119222323847


本文永久更新地址:

https://www.fenxiangbe.com/p/jmeter取样器javaRequest脚本8.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】关于 SQL 语句执行分析的二三事

一、为什么要发生这件事 确实&#xff0c; 平时我们增删改查写的好好的&#xff0c; 各种业务代码&#xff0c;各种小接口写的不亦乐乎&#xff0c;正常是没时间干这个的&#xff0c;但是但是&#xff0c;这不是还有点技术追求嘛&#xff0c;假如我们平时测一个小接口&#xf…

【LeetCode】199.二叉树的右视图

1.问题 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: []…

类加载过程

基本说明 反射机制是Java实现动态语言的关键&#xff0c;也就是通过反射实现类动态加载。 静态加载&#xff1a;编译时加载相关的类&#xff0c;如果没有则报错&#xff0c;依赖性太强动态加载&#xff1a;运行时加载需要的类&#xff0c;如果运行时不用该类&#xff0c;即使…

C++关于线程的一些操作

线程创建和接收 std::this_thread::get_id()获取当前线程的线程ID std::this_thread::yield()让步结束当前线程的时间片 int main() {vector<thread> threads(2);threads[0] thread([]() {cout << this_thread::get_id() << endl;});threads[1] thread([](…

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还具…

ansible自动运维——ansible使用临时命令通过模块来执行任务

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…

【机器学习实战】Python基于SVD奇异值分解进行矩阵分解(八)

文章目录 1 前言1.1 奇异值分解1.2 奇异值分解的应用 2 简单计算SVD2.1 NumPy 计算 SVD2.2 scikit-learn 计算截断 SVD2.3 scikit-learn 计算随机 SVD 3 demo数据演示3.1 导入函数3.2 导入数据3.3 计算SVD 4 讨论 1 前言 1.1 奇异值分解 奇异值分解&#xff08;Singular Valu…

信息安全复习四:置换密码乘积密码隐写术

一、章节梗概 置换密码、Rail Fence密码、行置换密码、乘积密码、转子机、隐写术 二、置换技术 2.1 定义 重新排列明文字母&#xff0c;达到信息加密的目的。 与替代密码不同的是&#xff0c;原来明文中的字母同样出现在密文中&#xff0c;只是顺序被打断。 古典的置换密码…

.net6 core Worker Service项目发布部署到Linux,以守护进程服务的形式部署启动

一、发布项目 1、以文件夹形式 2、目标运行时选对应的平台&#xff08;Linux-x64&#xff09; 3、文件夹选项&#xff1a;在发布前删除所有现有文件 二、部署项目&#xff08;安装.net6环境&#xff1a;参考Linux安装 dotnet sdk 6.0&#xff09; &#xff08;1&#xff09;…

《Spring MVC》 第二章 让程序run起来

前言 Spring MVC 是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架。 Spring MVC 本质是对 Servlet 的进一步封装&#xff0c;其最核心的组件是DispatcherServlet&#xff0c;它是 Spring MVC 的前端控制器&#xff0c;主要负责对请求和响应的统一地处理和分发。C…

用好Python自然语言工具包-- 实例“基于本地知识库的自动问答”

首先鸣谢thomas-yanxin 本问中示例来自他在GitHub上的开源项目“基于本地知识库的自动问答”&#xff0c;链接如下&#xff1a; thomas-yanxin/LangChain-ChatGLM-Webui: 基于LangChain和ChatGLM-6B的针对本地知识库的自动问答 (github.com) 目录 1. 基础知识&#xff1a; …

JVM调优最佳参数

项目背景 C端的项目&#xff0c;用户量比较多&#xff0c;请求比较多。 启动参数表 Xmx指定应用程序可用的最大堆大小。 Xms指定应用程序可用的最小堆大小。 &#xff08;一般情况下&#xff0c;需要设置Xmx和Xms为相等的值&#xff0c;且为一个固定的值&#xff09; 如果该值…

HCIP之链路聚合、VRRP

链路聚合 链路聚合 --- 可以将多个物理接口绑定成一个逻辑接口&#xff0c;即将N条物理链路聚合为一条逻辑链路。可以在不升级硬件的条件下&#xff0c;达到增加带宽的效果 我们将逻辑链路&#xff0c;称为聚合链路&#xff0c;在华为设备中称为ETH-TRUNK链路&#xff08;这个技…

Vue表单进阶操作

多选框另类使用场景 这个复选框和上面爱好那个复选框是不一样的&#xff0c;它不需要收集value值&#xff0c;只需要知道是否被选择&#xff0c;也就是ture或false&#xff0c;这时候就可以安装输入框的方式去写&#xff0c;直接去定义字符串&#xff0c;而不是数组 然后把全部…

“esp8266mod模块连接机智云Arduino实现pwm调节led的亮度“+_+

经过几天的漫长的探索和调试&#xff0c;终于连上机智云了。 历经的困难&#xff1a;esp8266总是连接机智云app超时&#xff0c;连接无反应&#xff0c;无数据。 1、机智云开发者中心&#xff0c;新建数据点&#xff0c;生成muc代码包&#xff0c;具体配置可以参考其他文章。…

go破冰之旅·5·常量、变量、数据类型

成体系的、快速学通Go&#xff0c;就在此时&#xff0c;持续连载&#xff01; 上一篇&#xff1a; https://lan6193.blog.csdn.net/article/details/123454411https://lan6193.blog.csdn.net/article/details/123454411上文熟悉了Go的基础符号、基础规则&#xff0c;本文我们…

前端项目代码规范

一、变量与函数的命名&#xff08;变量名和函数名是最好的注释&#xff09; 通常情况下函数小陀峰、类名大陀峰、变量短横线/小陀峰、const全大写单词要表达出正确的语义&#xff0c;如&#xff1a;array类型或其它集合类型用英语复数格式、其它类型不要用复数格式区分函数为功…

async/await 在 C# 语言中是如何工作的?(下)

接《async/await 在 C# 语言中是如何工作的&#xff1f;&#xff08;上&#xff09;》、《async/await 在 C# 语言中是如何工作的&#xff1f;&#xff08;中&#xff09;》&#xff0c;今天我们继续介绍 SynchronizationContext 和 ConfigureAwait。 ▌SynchronizationContext…

【SVN已解决】修改svn服务端地址为ip或者域名地址的方法

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

Vue之指令详解与自定义指令

指令 想要了解自定义指令&#xff0c;那肯定得先明白什么是指令。 指令的本质&#xff1a;语法糖&#xff0c;标志位。在编译阶段 render 函数里&#xff0c;会把指令编译成 JavaScript 代码。 常见的Vue内置指令有&#xff1a; v-on 即 。v-on:click”function“&#xff…