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. ORACLE11g 重装系统后根据dbf恢复数据库

    1.安装一个和原系统一致的oracle 环境,主要包括版本.数据名sid.实例名.路径和数据库编码一致 2.修改listener.ora的参数 SID_LIST_LISTENER = (SID_LIS ...

  2. JS-对象的数据重复

    <title>01-对象中数据的重复</title> <script type="text/javascript"> var arr = []; ...

  3. Tinker 热修复

    集成方式: 第一步:在project  build.gradle 文件中添加: dependencies { // Tinker classpath("com.tinkerpatch.sdk ...

  4. Oracle 迁移某用户的数据到Sql Server

    准备条件: 1.Oracle11g数据库 2.Sql Server 2008 3.Microsoft SQL Server Migration Assistant for Oracle 步奏如下: 1 ...

  5. Asch PK Lisk系列之一:安全性

    在币圈,听到对数字货币的质疑之声从来没少过.为什么有人会质疑呢?他们列出了很多理由(以下四点内容摘自网络): 数字货币是依附于网络的,而中国并没有独立自主的网络技术,容易被敌对势力利用数字货币损害中国 ...

  6. 转:浅谈SimpleDateFormat的线程安全问题

    转自:https://blog.csdn.net/weixin_38810239/article/details/79941964 在实际项目中,我们经常需要将日期在String和Date之间做转化, ...

  7. 【TensorFlow使用教程】1 环境搭建

    一.TensorFlow主要依赖包——Protocol Buffer & Bazel 1. Protocol Buffer 首先要弄清三个概念: 结构化数据:指拥有多种属性的数据,例如用户信息 ...

  8. 二、springboot使用jpa

    花了几天时间,好好看了看springboot的jpa部分,总结了常用的形式. 1.通过STS工具添加jpa的依赖项 要连mysql,测试的时候需要web,顺便添加了lombok不写set和get方法了 ...

  9. WAN口和LAN 口有什么区别

    WAN口不能够用来连接电脑. LAN(1.2.3.4)口只能够用来连接电脑. 拓展资料 路由器(Router),是连接因特网中各局域网.广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径, ...

  10. 红黑树与AVL特性

    红黑树:比较平衡的二叉树,没有一条路径会比其他路径长2倍,因而是近似平衡的.所以相对于严格要求平衡的AVL树来说,它的旋转保持平衡次数较少.插入删除次数多的情况下我们就用红黑树来取代AVL. 红黑树规 ...