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. com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'id' at row 1

    1.存储的值超过了字段长度.调整数据库中的字段长度 2,变更字段字符集编码为utf8

  2. acm入门练习心得

    A题  两数相加等于n相乘等于m 问是否存在两数 写了超级久没有写出来,因为我的思路是 把m的因子都找出来,加加看,看等不等于n.后来发现m的因子还要考虑负数的情况,还要考虑m是不是负数的情况.太过麻 ...

  3. [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)

    github地址:https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况,并调用接口,当资源被超额占用时,发送警报到个人手机: ...

  4. Vue.js最佳实践

    Vue.js最佳实践 第一招:化繁为简的Watchers 场景还原: created(){ this.fetchPostList() }, watch: { searchInputValue(){ t ...

  5. PostgreSQL源码安装文档

    This document describes the installation of PostgreSQL using the source    code distribution. (If yo ...

  6. vim操作表

  7. 如何使用ffmpeg

    https://blog.csdn.net/minger1202/article/details/52468986  解码 https://www.jianshu.com/p/c6cfe2edd083 ...

  8. 内存不够怎么办? 1.5.1 关于隔离 1.5.2 分段(Segmention) 1.5.3 分页(Paging)

    小结: 1. 内存不够怎么办?1.5.1 关于隔离1.5.2 分段(Segmention)1.5.3 分页(Paging) <程序员的自我修养——链接.装载与库>

  9. iOS自定义结构体

    一.提要 通过以官方的CGSize为例,自定义Objective-C中的结构体,并使用. 二.CGSize 1.系统定义的CGSize结构体 struct CGSize { CGFloat width ...

  10. 文件处理----Properties文件处理

    properties是一种属性文件,这种文件以key=value格式存储内容,代码中可以使用Properties类来读取这个文件,然后得到数据. 当配置文件用,由于难以表达层次,复杂点可以使用xml做 ...