在Jmeter->选项->函数助手对话框中我们可以看到Jmeter内置的一些常用函数,但考虑到测试过程中的实际情况,我们经常需要在脚本引用或者实现自定义的函数。那么如何在“函数助手对话框中”看到我们自定义的函数呢,下面将介绍详细步骤:

Jmeter源码导入参考上一篇:https://www.cnblogs.com/xiaozhaoboke/p/14103865.html

一、在目录..\apache-jmeter-5.0\src\functions\org\apache\jmeter\functions新建自定义class文件,例如GetPhoneNumber.class并继承AbstractFunction重写以下方法:

package org.apache.jmeter.functions;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler; import java.util.Collection;
import java.util.List; public class GetPhoneNumber extends AbstractFunction{ @Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
return null;
} @Override
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException { } @Override
public String getReferenceKey() {
return null;
} @Override
public List<String> getArgumentDesc() {
return null;
}
}

二、实现函数逻辑后代码如下:

package org.apache.jmeter.functions;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jmeter.util.JMeterUtils; import java.util.Collection;
import java.util.LinkedList;
import java.util.List; public class GetPhoneNumber extends AbstractFunction{
//定义function名称
private static final String KEY = "__MobileGenerator";
private static final List<String> desc = new LinkedList<String>();
private static final String[] telFirst = "134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153 ".split(",");
//自定义function描述
static{
desc.add(JMeterUtils.getResString("Name of variable in which to store the result (optional)"));
} private CompoundVariable varName; //执行部分
@Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
int index = getNum(0, telFirst.length - 1);
String first = telFirst[index];
String second = String.valueOf(getNum(1, 888) + 10000).substring(1);
String third = String.valueOf(getNum(1, 9100) + 10000).substring(1);
String mobile = first + second + third;
if (varName != null){
JMeterVariables vars = getVariables();
final String varTrim = varName.execute().trim();
if (vars != null && varTrim.length() > 0) {
vars.put(varTrim, mobile);
}
}
return mobile;
} //设置参数
@Override
public void setParameters(Collection<CompoundVariable> parameters)throws InvalidVariableException
{
checkParameterCount(parameters, 0, 1);
Object[] values = parameters.toArray();
if (values.length > 0) {
varName = (CompoundVariable) values[0];
} else {
varName = null;
}
} /** {@inheritDoc} */
@Override
public String getReferenceKey() {
return KEY;
} /** {@inheritDoc} */
public List<String> getArgumentDesc() {
return desc;
} private static int getNum(int start,int end)
{
return (int)(Math.random()*(end-1));
} }

三、运行编译

也可以写个测试类

编译后得到GetPhoneNumber.class文件

四、将编译后的class文件放到ApacheJMeter_functions.jar中

  使用WinRAR打开ApacheJMeter_functions.jar,复制GetPhoneNumber.class文件至\org\apache\jmeter\functions\目录下保存;

五,重启Jmeter,打开函数助手

六、学习后总结,不足之处请指出,后续修正!

参考原文链接:https://blog.csdn.net/liujingqiu/article/details/87891378

Jmeter二次开发实现自定义functions函数(九)的更多相关文章

  1. jmeter 二次开发---实现自定义函数插件

    1.前提: 有时候,Jmeter自带的函数,可能不能满足于业务的需求,这时候,我们可以自己写一个函数插件: 2.创建maven工程 一直next,输入GroupID,ArtifactId->fi ...

  2. Jmeter二次开发——自定义函数

    在之前的博文中,Jmeter二次开发--基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发.聊到Jmeter的函数,知道Jme ...

  3. JMeter二次开发(2)-编写 JSON Assertion 插件

    本篇文章主要介绍如何对JMeter进行二次开发,添加自己所需的功能.这里以Json验证为例进行说明.在web接口测试过程中,JSON的应用已经非常普遍,但原声的JMeter并没有提供Json及Json ...

  4. PHPCMS V9二次开发便捷自定义后台入口文件夹

    phpcms v9二次开发便捷自定义后台入口文件夹 最新发布的phpcms v9由于采用了mvc的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文 ...

  5. Jmeter二次开发

    Jmater函数扩展的步骤1. 导入Jmeter源码,或使用maven项目,引入依赖的jar包 2. 继承AbstractFunction,实现自定义Function 3. 继承JMeterTestC ...

  6. JMeter二次开发(1)-eclipse环境配置及源码编译

    1.下载src并解压 http://jmeter.apache.org/download_jmeter.cgi   2.获取所需jar包,编译 ant download_jars ant instal ...

  7. 性能测试基础---jmeter二次开发

    ·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...

  8. Jmeter二次开发——基于Java请求

    简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...

  9. 齐博x1 二次开发的灵魂fun函数

    X1最强大之处,体现在灵活,扩展性强,在使用过程中,你会发现灵活之处非常之多. 现在跟大家讲一下,灵魂函数 fun() X1的核心函数文件是 application/common.php 随着模块频道 ...

随机推荐

  1. jmeter5.2版本 配置元件之逻辑控制器详解

    1.简单控制器(Simple Controller) 作用:将多个请求放置在一起,但是没有逻辑上的操作,进行一个简单的分组,一般是由于分组后的请求需要进行统一的某个操作或者存在共同的因素.在简单控制器 ...

  2. 深入理解Python切片

    Python序列的切片很基础同时也很重要,最近看到一个[::-1]的表达,不明所以,查了一些资料并实际操作,对Python切片有了更深刻的认识,以下结合例子详细说明.先看下切片的基本语法,一般认为切片 ...

  3. mybatis多种查询方法

    1. 查询单行,对象,并封装成一个对象 Employee getEmpById(Integer id); <select id="getEmpById" resultType ...

  4. FastAPI(44)- 操作关系型数据库

    ORM FastAPI 可与任何数据库和任何样式的库配合使用并和数据库通信 object-relational mapping 对象关系映射 ORM 具有在代码和数据库表(关系)中的对象之间进行转换( ...

  5. Java面向对象编程(三)

    static关键词 static关键字:可以修饰属性.方法.代码块.内部类. 一.使用static修饰属性:静态变量(或类变量) 1. 属性,按是否使用static修饰,又分为:静态属性 vs 非静态 ...

  6. JVM 面试题,安排上了!!!

    肝了一篇非常硬核的 JVM 基础总结,写作不易,小伙伴们赶紧点赞.转发安排起来! 原文链接 据说看完这篇 JVM 要一小时 JVM 的主要作用是什么? JVM 就是 Java Virtual Mach ...

  7. 腾讯混合云存储 TStor 系列再添新成员,并行存储一体机正式发布

    最近国内某大型互联网公司依靠其数据优势成功上市,可见数据的重要性,而数据和存储密不可分,您真的知道自己需要更高性能存储吗? 在当今数据爆发式增长的时代,数据已经成为很多行业最重要的资源,没有之一. 数 ...

  8. vue 动态菜单以及动态路由加载、刷新采的坑

    需求: 从接口动态获取子菜单数据 动态加载 要求只有展开才加载子菜单数据 支持刷新,页面显示正常 思路: 一开始比较乱,思路很多.想了很多 首先路由和菜单共用一个全局route, 数据的传递也是通过s ...

  9. luogu3888 GDOI2014拯救莫里斯 (状压dp)

    题目描述 莫莉斯·乔是圣域里一个叱咤风云的人物,他凭借着自身超强的经济头脑,牢牢控制了圣域的石油市场. 圣域的地图可以看成是一个n*m的矩阵.每个整数坐标点(x , y)表示一座城市\(( 1\le ...

  10. Golang通脉之包的管理

    在工程化的开发项目中,Go语言的源码复用是建立在包(package)基础之上的. 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言提供了很多内置包,如fmt.os.io等. ...