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. 什么是Hash?Hash有哪些特性?

    Hash 把任意长度的输入通过散列算法变换成固定长度的输出 Hash的特性: 输入域无穷,输出域有限.例如:有无穷多个(在工程中可以具体到多少个,例如1000)输入参数经过hash函数映射后得到有限的 ...

  2. 社团的CTF逆向题WriteUp

    最近社团弄了CTF比赛,然后我就帮忙写了逆向的题目,这里写一下WriteUp,题目和源码在附件中给出 一个简单的逆向:one_jmp_to_flag.exe 这题算是签到题,直接OD智能搜索就完事了, ...

  3. 基于贝叶斯算法实现简单的分类(java)

    参考文章:https://blog.csdn.net/qq_32690999/article/details/78737393 项目代码目录结构 模拟训练的数据集 核心代码 Bayes.java pa ...

  4. 火狐浏览器安装firebug和firepath插件方法(离线)

    1.下载FF55以内版本安装包,安装后在Firefox 更新选择"不检查更新" 2.火狐浏览器各个版本下载地址:http://ftp.mozilla.org/pub/firefox ...

  5. 搭建ionic3-angular5 开发环境并打包成安卓apk包教程

    安装node.js 搭建ionic3-angular5 开发环境,首先查看本地电脑是否安装node环境,打开终端,输入 命令: node -v 没有去安装nodejs  网址:http://nodej ...

  6. 【Python基础】lpthw - Exercise 38 列表的操作

    1.列表和字符串操作的混合练习 ten_things = "apples oranges crows telephone light sugar" print("Wait ...

  7. linux磁盘大小获取和文件大小获取

    一.获取磁盘大小(给入的是文件夹绝对路径):check_disk_available(QString path) { struct statfs diskinfo; unsigned long lon ...

  8. odoo按钮触发下载文件

    测试环境:Odoo8.0 1.在你的模块中创建一个方法,返回url 举个例子, @api.multi def get_stock_file(self): return{'type':'ir.actio ...

  9. Toad for Oracle 创建表空间和用户

    表空间 1.找到Tablespace,右键,单击Create Tablespace 2.输入表空间名字,例如:test_tablespace3.单击"Date Files"选项卡, ...

  10. 2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践 一.实验说明 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),vei ...