1.前提:

有时候,Jmeter自带的函数,可能不能满足于业务的需求,这时候,我们可以自己写一个函数插件;

2.创建maven工程

一直next,输入GroupID,ArtifactId->finsh

3.编辑pom.xml

创建好maven工程后,引入Jmeter的jar包,注意你本地Jmeter版本是几,这里<version></version>就写几

<dependency>
<groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId>
<version>3.3</version>
</dependency> <dependency>
<groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId>
<version>3.3</version>
</dependency>

4.创建一个package

实现扩展jmeterfunction,主要有两点:

1.实现function的类的package声明必须包含".functions"

2.需要继承org.apache.jmeter.functions.AbstractFunction,并且实现相应的方法

5.扩展类AbstractFunction讲解

public List<String> getArgumentDesc()

功能描述:顾名思义描述你写的这个方法是干嘛使的。

public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException

需要实现什么功能。

public String getReferenceKey()

返回function名称

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

设置参数,接收用户传递的参数

5.代码讲解

public class TicketNo extends AbstractFunction{

    //添加方法描述
private static final List<String> desc = new LinkedList<String>();
static {
desc.add("ticketNo");
}
//function名称
private static final String KEY = "__JddTicketNo";
private static final int num = 1; //传入参数的值
private Object[] values; private Date data =new Date(); /**功能描述**/
public List<String> getArgumentDesc() {
// TODO Auto-generated method stub
return desc;
} @Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
try {
Thread.sleep(1000);
String ticket = String.valueOf(data.getTime())
System.out.println("当前输出"+ticket);
return ticket;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
throw new InvalidVariableException(e);
}
} /**
* 设置参数。接收用户传递的参数
* @param collection
* @throws InvalidVariableException
* **/
@Override
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
checkParameterCount(parameters, num);
values = parameters.toArray(); } /**返回function名称**/
@Override
public String getReferenceKey() {
return KEY;
} }
 

jmeter 二次开发---实现自定义函数插件的更多相关文章

  1. Jmeter二次开发实现自定义functions函数(九)

    在Jmeter->选项->函数助手对话框中我们可以看到Jmeter内置的一些常用函数,但考虑到测试过程中的实际情况,我们经常需要在脚本引用或者实现自定义的函数.那么如何在"函数助 ...

  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二次开发(1)-eclipse环境配置及源码编译

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

  6. Jmeter二次开发

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

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

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

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

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

  9. Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)

    在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: ...

随机推荐

  1. ie9 form submit 请求参数问题替代办法

    //隐藏表单 <input id="hdPeriod" name="period" type="hidden" value=" ...

  2. Older Versions Of Eclipse

    Older Versions Of Eclipse Need help with older versions of Eclipse? LTS Request The following are li ...

  3. Kubernetes中的nodePort,targetPort,port的区别和意义(转)

    原文https://blog.csdn.net/u013760355/article/details/70162242 https://blog.csdn.net/xinghun_4/article/ ...

  4. azkaban---visualize crontab--frontail

    azkaban---visualize crontab azkaban--docker-----http://www.jkeabc.com/254015.html azkaban--tips   ht ...

  5. [knowledge][ETA] Encrypted Traffic Analytics

    思科ETA主页 https://www.cisco.com/c/en/us/solutions/enterprise-networks/enterprise-network-security/eta. ...

  6. [httpd] httpd directory list character encoding

    在httpd下放置文件用来直接从浏览器访问的时候,中文文件名有可能产生乱码. 做以下设置,调整字符编码: 1: Add this to your .htaccess: IndexOptions +Ch ...

  7. LeetCode 496 Next Greater Element I 解题报告

    题目要求 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset ...

  8. eclipse几种常见问题的解决

    build项目时出现卡死现象的解决方案 场景:在使用使用Eclipse编辑文件保存时或者build项目时,经常出现卡死现象,此时即便杀死eclipse进程重启还是依然出现这种现象. 原因:eclips ...

  9. /etc/passwd- 和/etc/shadow-文件

    今天偶尔看到系统里有/etc/passwd- 和/etc/shadow-文件,经测试只要执行过系统的用户操作命令就会产生,如deluser.passwd.chpasswd.adduser等命令,应该是 ...

  10. IE报错:[vuex] vuex requires a Promise polyfill in this browser.

    使用的是vue2.0版本 IE报错提醒: 导致原因:使用了 ES6 中用来传递异步消息的的Promise,而IE的浏览器不支持 解决办法: 1.安装babel-polyfill模块,babel-plo ...