Jmeter内置了一些常用的函数,在Jmeter->选项->函数助手对话框,但是测试过程中这些函数远远不够,

比如:对服务器返回的session信息MD5、Base64加密等,再上传给服务器,作为服务对客户端认证识别的过程。

因此经常需要在脚本引用或者实现自定义的函数。

方法一:

使用Beanshell Sampler、BSF Sampler等实现,现已Base64加密为例,脚本如下:

import sun.misc.BASE64Decoder;

String res = new sun.misc.BASE64Encoder().encode("${session}".getBytes());
vars.put("BASE64",res);

${session}:要加密的字符串参数

BASE64:加密后的字符串保存在${BASE64}参数中

方法二:

将Base64做成Jmeter的可以直接调用的函数,这需要用到Jmeter插件开发,为了简化开发,将Base64添加到已开发的JMeterPlugins.jar中

JMeterPlugins.jar下载地址:http://download.csdn.net/detail/meitingbee/8090373

官网也可以下载

步骤:
1、使用rar工具解压JMeterPlugins.jar
2、在相应目录Jmeter\functions下新建java文件Base64.java
3、在classpath中添加Base64.java引用的jar包
;%JAVA_HOME%/lib/ApacheJMeter_core.jar;%JAVA_HOME%/lib/ApacheJMeter_java.jar;%JAVA_HOME%/lib/sun.misc.BASE64Decoder.jar
4、使用javac编译java文件,生成Base64.class文件
javac  Base64.java
5、命令行使用jar打包
jar JMeterPlugins.jar kg
将kg包含的内容打包,包名JMeterPlugins.jar
6、将JmeterPlugins.jar复制到jmeter\lib\ext文件夹下,打开jmeter,函数助手中可以看到新增的_Base64函数

${__Base64(${session},)}即为${session}的Base64加密字符串

Base64.java文件内容如下:

package kg.apc.jmeter.functions;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.threads.JMeterVariables;
import sun.misc.BASE64Encoder;

public class Base64 extends AbstractFunction
{
  private static final List<String> desc = new LinkedList();
  private static final String KEY = "__Base64";
  private Object[] values;

public synchronized String execute(SampleResult paramSampleResult, Sampler paramSampler)
    throws InvalidVariableException
  {
    JMeterVariables localJMeterVariables = getVariables();
    String str1 = ((CompoundVariable)this.values[0]).execute();

String str2 = new BASE64Encoder().encode(str1.getBytes());

if ((localJMeterVariables != null) && (this.values.length > 1)) {
      String str3 = ((CompoundVariable)this.values[1]).execute().trim();
      localJMeterVariables.put(str3, str2);
    }

return str2;
  }

public synchronized void setParameters(Collection<CompoundVariable> paramCollection)
    throws InvalidVariableException
  {
    checkMinParameterCount(paramCollection, 1);
    this.values = paramCollection.toArray();
  }

public String getReferenceKey()
  {
    return "__Base64";
  }

public List<String> getArgumentDesc()
  {
    return desc;
  }

static
  {
    desc.add("String to calculate Base64 hash");
    desc.add("Name of variable in which to store the result (optional)");
  }
}

Jmeter自定义函数相关推荐

  1. Jmeter自定义函数开发-------输入参数被分割

    项目场景: 测试开发工程师自学之路:开发Jmeter自定义函数 问题描述 函数传参时:有一个参数是Json串, 本想着作为一个data参数使用的,但是setParameters自动给按 ", ...

  2. Jmeter自定义函数和引入外部文件的几种方法

    1.  Bean Shell简介 BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); Bean ...

  3. php 自定义 引用函数,php总结6——自定义函数、引用传值

    6.1 自定义函数 function 函数名称(参数[=默认值],参数[=默认值]...){ 函数体 [return val]; } 1) 无参数无返回 2) 有参数无返回 3) 有参数有返回 函数中 ...

  4. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  5. 如何在sqlite3连接中创建并调用自定义函数

    #!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...

  6. 自定义函数_自定义函数,让你的表格为所欲为

    自定义函数可以做什么?可以让你的表格为所欲为! 这篇文章教你如何掌握自定义函数. 函数是大家在使用 Excel 工作的过程中经常会用到的. 比如大家已经很熟悉了的求和函数 SUM,计数函数 COUNT ...

  7. 【mysql的编程专题⑤】自定义函数

    用户自定义函数(user-defined function,UDF) 是一种对mysql的扩展途径,其用法与内置函数相同 创建自定义函数 语法 create function function_nam ...

  8. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  9. 查缺补漏 | Python自定义函数

    1 默认参数要放在自定义函数参数列表的最后,也就是说下面的定义是不允许的 2 调用函数时熟悉的是位置参数,但是也可以用关键字参数,也就是调用时把参数名写出来(可以通过它来改变参数的顺序).不过貌似系统 ...

最新文章

  1. linux集群无密码访问,Linux服务器集群通过SSH无密码登录
  2. 四舍六入五成双银行家算法的 PHP和Javascript实现
  3. linux 五种IO模型 简介
  4. 应用DIV+CSS编码时容易犯的一些错误
  5. 如何区分引用类型和原始类型
  6. SpringBoot使用CommandLineRunner和ApplicationRunner项目初始化事件
  7. 最优的cuda线程配置
  8. LruCache缓存bitmap(一)
  9. 某国有7个城市,它们互相之间没有公路相通,因此交通十分不便。为解决这一“行路难”的问题,政府决定修建公路,经过调研,如果把这7个城市之间的关系看成一个图,字母代表城市名称,数字代表修路的花费。【详解】
  10. mysql增量备份及恢复解决方案
  11. JAVA实现Html转Pdf(wkhtmltopdf)
  12. 【解决】RuntimeError:Trying to backward throughthe graph a second time
  13. Stata:数据包络分析(DEA)
  14. Java反射--藤原豆腐店自用
  15. 有关监控的前5名最佳书籍
  16. 【英语】常见连音规则
  17. MySQL入门:数据库是什么 | SQL是什么 | MySQL是什么
  18. Java中接口的继承
  19. 【mysql】查询中英文名称拼接处理
  20. Linux·VFS虚拟文件系统

热门文章

  1. python隐藏画笔箭头的函数是hide_隐藏画笔箭头的函数是()。
  2. 量化投资_止盈止损在策略中的有效性(改编)
  3. mac下关闭chrome浏览器的自动更新
  4. 学生用计算机坏了怎么办,电脑坏了,我来教你怎么处理!修电脑再也不求人!...
  5. 一体化传真机发传真返回110040的解决办法
  6. 芝村乡明确个人小额投资理财方式
  7. C++实现 1227. 分巧克力
  8. ArrayList为什么会出现并发问题以及相应的解决办法
  9. 几次登上腾讯WE大会的阿尔茨海默研究,会是未来医疗的探路者吗?
  10. 代码审计--wordpress篇