Jmater函数扩展的步骤
1、 导入Jmeter源码,或使用maven项目,引入依赖的jar包

2、 继承AbstractFunction,实现自定义Function

3、 继承JMeterTestCase,对自定义的函数进行单元测试

4、 对自定义函数进行编译打包,并放在lib\ext下

5、 Jmeter ->选项 ->函数助手对话框,选择已开发的函数调用

自定义Function
继上一篇文章已经介绍如何导入Jmeter源码,这里就不做详细介绍,此次主要引用自动生成手机号码为例

import java.util.Collection;

import java.util.LinkedList;

import java.util.List;

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;

public class MobileGenerator extends AbstractFunction {

private static final List<String> desc = new LinkedList<String>();

//定义function名称

private static final String KEY = "__MobileGenerator";

private static 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("Name of variable in which to store the result (optional)");

}

private CompoundVariable varName;

//执行部分

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 thrid = String.valueOf(getNum(1, 9100) + 10000).substring(1);

String mobile = first + second + thrid;

if (varName != null) {

JMeterVariables vars = getVariables();

final String varTrim = varName.execute().trim();

if (vars != null && varTrim.length() > 0) {// vars will be null

// on TestPlan

vars.put(varTrim, mobile);

}

}

return mobile;

}

//设置参数值

public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {

//校验参数个数  checkParameterCount(Collection<CompoundVariable> parameters, int min, int max)

checkParameterCount(parameters, 0, 1);

//将值存入变量中

Object[] values = parameters.toArray();

if (values.length > 0) {

varName = (CompoundVariable) values[0];

} else {

varName = null;

}

}

@Override

public String getReferenceKey() {

return KEY;

}

@Override

public List<String> getArgumentDesc() {

return desc;

}

private static int getNum(int start, int end) {

return (int) (Math.random() * (end - 1));

}

}

对开发的函数进行单元测试
import static org.apache.jmeter.functions.FunctionTestHelper.makeParams;

import java.util.Collection;

import org.apache.jmeter.engine.util.CompoundVariable;

import org.apache.jmeter.junit.JMeterTestCase;

import org.junit.Test;

public class MobileGeneratorTest extends JMeterTestCase {

@Test

public void test() throws Exception {

MobileGenerator mobileGenerator = new MobileGenerator();

Collection<CompoundVariable> params = makeParams("mobile",null,null);

mobileGenerator.setParameters(params);

String string = mobileGenerator.execute();

System.out.println(string);

}

}

编译并打包
   编译并打包到lib\ext目录下,覆盖下之前的ApacheJMeter_functions.jar,重启Jmeter

调用自定义函数

---------------------
作者:Jerry最胖
来源:CSDN
原文:https://blog.csdn.net/qq_27791709/article/details/78952054
版权声明:本文为博主原创文章,转载请附上博文链接!

Jmeter二次开发的更多相关文章

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

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

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

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

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

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

  4. jmeter 二次开发

    基于jmeter的java请求的二次开发 常用的方法: ①.addArgument("name", "value")    定义参数 ②.sampleStart ...

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

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

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

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

  7. JMeter二次开发环境配置

    本文主要介绍如何在Eclipse中配置JMeter开发环境. 一.下载JMeter源码 1.在JMeter官网下载二进制包和源码包: 解压备用: 二进制解压后文件夹名称为“jmeter_release ...

  8. jmeter二次开发----Loadrunner或Jmeter发送邮件报告

    Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送.本人使用的是mail-1.4.7.jar,可以通过下载获得:htt ...

  9. Jmeter二次开发之代码环境搭建(QQ交流群:577439379)

    一.创建项目 1. 分别下载apache3.1 binaries和source两个压缩包,前者为release版本,后者为jmeter最新的源码,下载地址:http://jmeter.apache.o ...

随机推荐

  1. maven与eclipse集成

    https://www.cnblogs.com/teach/p/5906425.html

  2. 小甲鱼Python第二十讲课后习题---021

    笔记: 1.lambda表达式的作用: 1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后 ...

  3. eclipse部分常用快捷键

    -------------eclipse常用快捷键------------- 1.alt+?或alt+/:自动补全代码或者提示代码 2.ctrl+o:快速outline视图 3.ctrl+shift+ ...

  4. 触发器中的after与before理解

    做一个表的insert的trigger,目的是只修改插入行的字段. CREATE OR REPLACE TRIGGER TR_RME_SLOT BEFORE INSERT ON RME_SLOT FO ...

  5. SSIS获得Excel行号(转自http://blog.csdn.net/zplume/article/details/19113911)

    问题描述: 首先个人并不推荐将Excel作为数据源,因为Excel单元格式会引起特别多的数据转换问题,例如:单元格里明明是2.89,但SSIS抽取到数据库里面之后却变成了2.88999999之类的数据 ...

  6. Selenium 3----设置元素等待

    在做Web应用的自动化测试时,定位元素必不可少,这个过程经常出现定位不到元素的情况,常见原因有哪些呢? 1.描述错误 提高编写水平.细心 2.Frame/Iframe框架原因 在元素所在框架里定位该元 ...

  7. flask基础三

    一.路由和视图(基础二上补充) (1)有参装饰器 路由采用的是有参装饰器实现的 @app.route("/index",methods=["GET"," ...

  8. CentOS 7 - 最小化安装后,解决无法使用yum命令问题!!

    刚刚最小化方式安装了CentOS 7 后,说实话,真不习惯也不喜欢纯shell方式工作,使用root账号登入后,马上想安装GNOME,但是发现yum不能正常工作!!! 一,输入安装X Window命令 ...

  9. Python中的锁

    一.全局解释器锁(GIL) 1.什么是全局解释器锁 在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使用权消失后才能使用全局解释器 ...

  10. AWS deepracer

    0.安装 坑很多,Ubuntu16.04上安python3,gazebo9,各种包,最后在python2下roslaunch,参见我爱豆的github: https://github.com/exit ...